命名方法和命名函数的定义是什么?
我已经阅读了问题
Difference between method and function in 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节中返回表达式:“返回表达式返回e必须出现在一些封闭的名称的主体内 所以我的问题是,在Scala中,做方法,命名方法和命名函数是指同一个概念吗?你在哪里得到命名函数的定义? 在代码List(1,2).map(_ 1)中,原始表达式_ 1是一个命名方法,然后该方法被转换为一个函数.什么样的函数,匿名函数,函数对象,命名函数? 根据我的理解,Scala只有两种类型的函数:作为方法的命名函数;一个函数文字的匿名函数.函数文字被编译成特征FunctionN的函数对象,以便在纯粹的面向对象的Scala世界中使用. 但是,对于上面代码中常规命名的funciton /方法(如_ 1),为什么Scala会将其转换为另一个函数对象? 解决方法
链接问题的答案相当好,但要解决您的具体问题:
> method =>你用def关键字定义的东西 方法和Function之间的区别有点像java原语和Java中的盒装Integer之间的区别. 在一般性讨论中,听到两者都被描述为“整数”是很常见的.这通常不是问题,但您必须注意在区分相关的任何地方都要准确. 同样,当程序需要时,方法将自动转换为Function(因此也就是对象),就像装箱原语一样.因此将方法称为函数并不完全错误. UPDATE 那么它是怎样工作的? 当您尝试将方法作为参数传递给例如列表[A] .map,编译器将生成一个派生Function1 [A,B]的内部类(带有合成名称),以及一个委托给您最初提供的方法的apply方法.然后将其实例作为实际参数传递. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |