これは、いくつかの関数を定義して試す小さな Scala セッションです。
scala> def test1(str: String) = str + str;
test1: (str: String)java.lang.String
scala> test1("ab")
res0: java.lang.String = abab
うまく動作します。
scala> val test2 = test1
<console>:6: error: missing arguments for method test1 in object $iw;
follow this method with `_' if you want to treat it as a partially applied function
val test2 = test1
^
おっとっと。
scala> val test2 = test1 _
test2: (String) => java.lang.String = <function1>
scala> test2("ab")
res1: java.lang.String = abab
うまくいきます!
_
これで、折りたたみ時の構文 (_ + _
など)を見てきました。私が理解しているように、それは_
基本的に「議論」を意味します。つまりtest1 _
、基本的には引数を持つ関数を意味し、これは " に与えられtest1
ます。しかし、それが単にとまったくtest1
同じではないのはなぜですか? を追加すると違いがあるのはなぜ_
ですか?
というわけで探索を続けた…
scala> val test3 = (str: String) => str + str
test3: (String) => java.lang.String = <function1>
scala> test3("ab")
res2: java.lang.String = abab
scala> val test4 = test3
test4: (String) => java.lang.String = <function1>
ここでは、なしで動作し_
ます! def
ed 関数と ed 関数の違いは何val
ですか?