我在 Intellij Idea 14社区版中创建了 Scala工作表,现在尝试使用基本示例进行一些scala练习。
当我创建一个函数时,我在工作表编译输出中看到的函数描述显示了一些奇怪的东西,我的scala编译器或Intellij是错误的,还是在 scala 2.10.6中显示函数定义的新方法(注意:我没有使用SBT)
Java:1.8 ,OS:Mac OSX
isGoodEnough(guess: Double, x: Double) = math.abs(guess * guess - x) / x < 0.001
def improve(guess: Double, x: Double) = (guess + x / guess) / 2
def sqrtIter (guess : Double, x : Double) : Double =
if(isGoodEnough(guess, x)) guess
else sqrtIter(improve(guess, x), x)
def sqrt (x : Double) = sqrtIter(1, x)
sqrt(4)
Scala工作表显示的输出
isGoodEnough: isGoodEnough[](val guess: Double,val x: Double) => Boolean
improve: improve[](val guess: Double,val x: Double) => Double
sqrtIter: sqrtIter[](val guess: Double,val x: Double) => Double
sqrt: sqrt[](val x: Double) => Double
res0: Double = 2.000609756097561
我无法解释为什么它将函数名称显示为isGoodEnough [],在函数定义/描述中改进[]
答案 0 :(得分:1)
在Scala中,当您想要使函数变通时,可以使用泛型。例如,下面我的尾部函数作用于列表,但我不想指定列表中的内容,只是它是一个事物列表(我将给予占位符A)< / p>
def tail[A](l: List[A]): List[A] = ...
执行此操作时,您需要告诉Scala编译器 - 在参数之前使用括号执行此操作。
isGoodEnough []中的[],改善[]表明你没有涉及任何泛型