返回高阶函数的值不会

ora*_*nge -1 scala

我有以下内容:

def retSomething(x: Int): Int => Int = x*x

assert(retSomething(5)(5) == 25)
assert(retSomething(1)(1) == 1)
assert(retSomething(1)(0) == 0)
Run Code Online (Sandbox Code Playgroud)

但断言失败了.当然这是正确的,但它表示在运行时缺少实现.

Ako*_*chy 5

我认为您正在寻找的实施是:

def retSomething(x: Int): Int => Int = y => x * y
Run Code Online (Sandbox Code Playgroud)

该方法retSomething意味着什么?它需要一个Int并返回一个函数Int => Int.该函数Int => Int接受另一个Int并返回一个Int.

所以我们想要一个带有新 功能的函数返回Int,这就是我们需要的原因:y => x * y.

类型推断在这里工作得很好,你不需要写(但可以): (y: Int) => x * y