我有以下几点:返回高阶函数的值不
def retSomething(x: Int): Int => Int = x*x
assert(retSomething(5)(5) == 25)
assert(retSomething(1)(1) == 1)
assert(retSomething(1)(0) == 0)
但断言失败。当然,这是正确的,但它说运行时缺少实现。
我有以下几点:返回高阶函数的值不
def retSomething(x: Int): Int => Int = x*x
assert(retSomething(5)(5) == 25)
assert(retSomething(1)(1) == 1)
assert(retSomething(1)(0) == 0)
但断言失败。当然,这是正确的,但它说运行时缺少实现。
我认为你正在寻找的实现是:
def retSomething(x: Int): Int => Int = y => x * y
什么方法retSomething
是什么意思?它需要一个Int
并返回一个函数Int => Int
。 函数Int => Int
需要另一个Int
并返回一个Int
。
所以我们想要返回一个功能,需要一个新的Int
,这就是为什么我们需要:y => x * y
。
类型推断很好地工作在这里,你不需要写(但可以):(y: Int) => x * y
这个返回int而期待INT =>内部
def retSomething(x: Int): Int => Int = x*x
应该
def retSomething(x: Int): Int => Int = x => x*x