2016-03-29 9 views

答えて

1

doOnSubscribeのシグネチャは次のとおりです。

ある
def doOnSubscribe(onSubscribe: => Unit): Observable[T] 

は、それが名前による引数を取ります。ですから、次のようにそれを使用する必要があります。

Observable.just(1).doOnSubscribe(println(s"subscribed")) 

をすることによって、名前doOnSubscribeに渡されたときprintlnが実行されませんが、一度だけdoOnSubscribeがそれを使用することを意味します。

何がdoOnSubscribeに渡したことは0-アリティ機能である、タイプ() => Unitの、すなわち発現、および式の値を破棄することにより、Scalaはユニットに任意の式を変えることができ、それがコンパイル理由です。

これはIMHOです。=> Unitの代わりに() => Unit引数を使用すると、期待通りに動作します。ところで

:あなたはこの;-)

+0

痛いによってnot the first困惑することになっている - あなたは正しい、私は完全にそれを逃しました。私はそのバグにコメントを追加しました。余分なインポートを犠牲にして、両方のスタイルをサポートできる方法があると思います。 –

関連する問題