1

最初のサンプル scala プログラムを書きましたが、次のようになります。

def main(args: Array[String]) {     
    def f1 = println("aprintln")
    println("applying f1")
    println((f1 _).apply)
    println("done applying f1")
}

出力は

applying f1
aprintln
()
done applying f1

誰かが余分な () が表示される理由を説明できますか? aprintln だけが表示されると思っていました。

ありがとう、

ジェフ

4

2 に答える 2

2

Java では void の戻り値の型を持つメソッドは、Scala では戻り値の型が Unit になります。() は単位の値の書き方です。

コードでは、f1 は println を直接呼び出します。したがって、f1 を呼び出してその結果を println に渡すと、f1 の本体に文字列が出力され、() として文字列化された結果が出力されます。

于 2009-10-05T03:09:07.163 に答える