これがコンパイラエラーを生成する理由を理解しています:
let initialProducer = SignalProducer<Int, NoError>(value:42)
let sideEffectProducer = initialProducer.on(next: { (answer: Int) in
return _
})
エラーは
タイプ '(Int) -> _' の値を予期される引数タイプ '(Int -> ())' に変換できませんか?
したがって、パラメーターは、返さnext
れるパラメーターを使用してクロージャーを受け取ります。Int
Void
_
しかし、なぜこれはうまくコンパイルされるのですか:
let initialProducer = SignalProducer<Int, NoError>(value:42)
let sideEffectProducer = initialProducer.on(next: { (answer: Int) in
return ""
})
を返していますがString
、Void
なぜコンパイラは文句を言わないのでしょうか?