比赛,我很新的斯卡拉,但我相信我已经写了一个完全合法的Scala程序:Scala的类型不匹配错误时,函数签名函数调用
这是Scala的工作表:
def product(f: Int => Int)(a: Int, b: Int): Int =
if (a > b) 1 // Not a 0 because the unit value of product is a 1
else f(a) * product(f)(a + 1, b)
product(x => x * x)(3, 7)
不过,我得到以下错误:
> <console>:8: error: type mismatch;
found : Unit
required: Int
if (a > b) 1 // Not a 0 because the unit value of product is a 1 else f
(a) * product(f)(a + 1, b)
^
> <console>:8: error: not found: value product
product(x => x * x)(3, 7)
^
这是一个简单的产品,从a
到b
乘以数量的所有平方 包括的。
它说,有我的函数调用,但是,这应该是完全合法的,因为我通过一个lambda函数返回Int
。任何有关这个问题的帮助和如何处理type mismatch
错误将深表感谢。使用Scala 2.10.2
。
亲爱的主,它适用于repl,但不适用于工作表。在学习Scala时,该工作表是不是很好用? –