我意识到以下函数调用都是相同的,但我不明白为什么。
val list = List(List(1), List(2, 3), List(4, 5, 6))
list.map(_.length) // res0 = List(1,2,3) result of 1st call
list map(_.length) // res1 = List(1,2,3) result of 2nd call
list map (_.length) // res2 = List(1,2,3) result of 3rd call
我可以理解第一次调用,这只是一个常规函数调用,因为 map 是类 List 的成员函数
但我无法理解第二次和第三次通话。例如,在第三次调用中,Scala 编译器如何知道“(_.length)”是“map”的参数?编译器如何知道“map”是“list”的成员函数?