scala工作表奇怪的功能描述

时间:2015-11-27 13:41:09

标签: scala intellij-14

我在 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 [],在函数定义/描述中改进[]

1 个答案:

答案 0 :(得分:1)

在Scala中,当您想要使函数变通时,可以使用泛型。例如,下面我的尾部函数作用于列表,但我不想指定列表中的内容,只是它是一个事物列表(我将给予占位符A)< / p>

def tail[A](l: List[A]): List[A] = ...

执行此操作时,您需要告诉Scala编译器 - 在参数之前使用括号执行此操作。

isGoodEnough []中的[],改善[]表明你没有涉及任何泛型