这是一个小的 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 _
基本上意味着一个带有参数的函数,它被赋予“。但是为什么这与 justtest1
不完全相同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
?