我已经阅读了Scala 中方法和函数之间的差异问题以及许多关于方法和函数之间差异的文章。我有一种感觉,“方法”只是一个“命名函数”,定义为类、特征或对象中的方法。“函数”代表那些文章中的“匿名函数”或“函数文字”或“函数对象”之类的东西。可以在《Scala 编程》一书 http://www.artima.com/shop/programming_in_scala_2ed中找到证据,第 141 页,第 8.1 节,“定义函数的最常见方法是作为某个对象的成员。这样的函数称为方法。”
但是,当我检查 Scala 语言参考http://www.scala-lang.org/docu/files/ScalaReference.pdf时,有一些概念,如命名方法。在第 91 页,第 6.20 节返回表达式:“返回表达式 return e 必须出现在某些封闭的命名方法或函数的主体内。” 您还可以在同一页面和其他地方找到术语“命名函数”。
所以我的问题是,在 Scala 中,方法、命名方法和命名函数是指同一个概念吗?你从哪里得到命名函数的定义?
在代码List(1, 2).map(_ + 1)
中,原始表达式_ + 1
是一个命名方法,然后将方法转换为函数。什么样的函数,匿名函数,函数对象,命名函数?
在我的理解中,Scala 只有两种类型的函数:命名函数是一个方法;一个匿名函数,它是一个函数文字。函数字面量被编译成 trait FunctionN 的函数对象,以便在 Scala 的纯面向对象世界中使用。
但是,对于上面代码中的常规命名函数/方法_ + 1
,为什么 Scala 将其转换为另一个函数对象?