これは比較的新しいスカラー関数であり、この構文砂糖が実際にどのように実際に働くのか、いつ特定の型を使うのか混乱してしまいます。スカラー:引数のない関数
私は3つの機能と同じことを行うべきすべてを書かれているが、私はFunction0が異なっ
バージョン1
val fn1 : (String) => String = System.getProperty(_)
println(fn1("os.name"));
バージョン2
val fn2 :() => String = System.getProperty("os.name")
println(fn2());
を動作している理由を理解することの問題を抱えています
バージョン2は型の不一致を示します。見つかりました:必要な文字列:()文字列に⇒
バージョン3私はバージョン2 ScalaはすでにはSystem.getPropertyの戻り値の型を知っているが、なぜそれがその特定のエラーが発生しないため、なぜそれをしないことを理解し
val fn3 =() => System.getProperty("os.name")
println(fn3());
明示的に戻り値の型を記述しないようにしてください。私は個人的には明示的な戻り値の型を好むので、返り値が何であるかを調べるメソッドに没頭する必要はありません。
ごめんなさいこれに対して、2番目の関数が "値、引数をとらず文字列を返す関数"と解釈された場合の応答です。同様の方法で最初の関数を読み込まない、つまり文字列をとり、文字列を返す関数を返しますか?代わりに、コンパイラは関数ではなく文字列を返すことに気づきます。 – Asrar