返回高阶函数的值不会

时间:2014-04-07 19:17:04

标签: scala

我有以下内容:

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

assert(retSomething(5)(5) == 25)
assert(retSomething(1)(1) == 1)
assert(retSomething(1)(0) == 0)

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

2 个答案:

答案 0 :(得分:5)

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

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

retSomething方法的含义是什么?它需要Int并返回一个函数Int => Int。 函数Int => Int需要另一个Int并返回Int

因此,我们希望使用 new Int的函数返回,这就是我们需要的原因:y => x * y

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

答案 1 :(得分:0)

这会返回Int,同时期望Int => INT

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

应该是

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