Function.curried未定义

Jam*_*ell 0 eclipse scala currying

以下Scala代码适用于我:

def curry(s1: String)(s2: String): String = (s1 + " " + s2).toUpperCase
val uncurry = Function.uncurried(curry _)
println(uncurry("short", "pants"))
Run Code Online (Sandbox Code Playgroud)

但是,以下代码不会:

def cat(s1: String, s2: String): String = (s1 + " " + s2).toUpperCase    
def curry = Function.curried (cat _) 
println(curry("short")("pants"))
Run Code Online (Sandbox Code Playgroud)

上面给了我一个编译器错误(在Eclipse中)

value curried不是object Function的成员

事实上,Eclipse中的intellisense也缺少Function对象上的curried函数......任何想法?

knu*_*ker 5

curried例如,A 将采用一个函数(A, B) => C并将其转换为A => B => C.实际的currying和由此产生的函数取决于参数的数量.并且没有定义仅用于一个参数的currying,因为只产生相同的函数.因此,curried没有在Function对象上定义,而是在Function2,Function3等等.这意味着,你想写:

def cat(s1: String, s2: String): String = (s1 + " " + s2).toUpperCase
val curry = (cat _).curried
println(curry("short")("pants"))
Run Code Online (Sandbox Code Playgroud)