在第一個中,您使用的是$0
,這是第一個傳遞給您提供的閉包的參數。
let someObservable = self.inputButton!.rx.tap.subscribe(){
print($0)
}
在這種情況下,編譯決定你實際上是調用下面的函數,因爲它匹配的是你所使用的,即它希望一個無名的說法,這又是一個參數一個封閉的event
:
func subscribe(_ on: @escaping (Event<E>) -> Void)
你可以重寫你的第一個這樣的代碼:
let someObservable = self.inputButton!.rx.tap.subscribe() { event in
print(event)
}
現在,在您提供一個封閉的第二個,即辦沒有使用任何通過的論據。所以編譯器必須找到另一個在這個時候在語法上有效的函數。作爲事實上它會使用這一個你:
func subscribe(file: String = #file, line: UInt = #line, function: String = #function, onNext: ((E) -> Void)? = nil, onError: ((Swift.Error) -> Void)? = nil, onCompleted: (() -> Void)? = nil, onDisposed: (() -> Void)? = nil)
所有這些函數的參數有默認值,你可以忽略他們。最後一個參數onDispose
是封閉類型,可以用尾部封閉符號來書寫。這意味着,你在這裏通過關閉:
let someObservable1 = self.inputButton!.rx.tap.subscribe(){
print("Hello")
}
將作爲您的dispose
塊。拇指的
規則使用RxSwift時: 要明確,命名你的論點,提供各類你的論點,從長遠來看,你會騰出更多的時間!