慢慢进入斯卡拉。这些都可以完成(显然不是我在这里的方式)?
def genericFunc(param1:String, param2:String, specificFunc(param2:SpecficType):[T]):[T] =
{
val interim:SpecificType = makeSpecificType(param1,param2)
specificFunc(interim)
}
def genericFunc(param1:String, param2:String,specificFunc(param2:SpecficType):Object):Object ={
val interim:SpecificType = makeSpecificType(param1,param2)
specificFunc(interim)
}
或者特定功能是否需要是特征/接口。
答案 0 :(得分:3)
要将函数作为参数传递给另一个函数,您应该具有以下方法签名:
def genericFunc[T](param1:String, param2:String, specificFunc: SpecficType => T): T = ???
SpecficType => T
- 是一个函数类型,这意味着它需要一个函数,它接受一个SpecficType
类型的参数并返回泛型类型T
的值。例如:
def fromString[A](str: String, f: String => A) = f(str)
fromString("hello", str => str.toCharArray.sum.toInt)
你可以进一步优化这个:
fromString("hello", _.toCharArray.sum.toInt)
在这种情况下,fromString
是高阶函数。 HOF的功能可以:
所有这些东西都在教授中完美描述。奥德斯基的书 - Programming in Scala