【发布时间】:2013-06-28 20:14:14
【问题描述】:
你们中的大多数人可能都知道在 scala 中可以通过两种方式定义函数,有 'def' 方法和 lambda 方法...
使 'def' 类通用是相当简单的
def someFunc[T](a: T) { // insert body here
我在这里遇到的问题是如何使以下通用:
val someFunc = (a: Int) => // insert body here
当然现在 a 是一个整数,但我需要做什么才能使其通用?
val someFunc[T] = (a: T) => 不起作用,val someFunc = [T](a: T) => 也不起作用
是否有可能使它们通用,或者我应该坚持使用“def”变体?
【问题讨论】:
-
在 Scala 中定义函数有多种方式,但使用
def不是其中之一!def关键字用于定义方法,这在某种意义上是JVM 的产物。给定合适的类型信息,Scala 可以自动将方法提升到相应的函数,使其透明且完全无摩擦,但两者是不同的东西。见stackoverflow.com/questions/17203510/… -
google 一些与函数和 scala 有关的东西,我向你保证,大多数结果都会显示方法和人们将方法称为函数,因此会造成混淆
-
尽管混淆是可以理解或解释的,但它并不能帮助从业者模糊区分。
标签: function scala generics lambda