【问题标题】:scala worksheet weird function descriptionscala工作表奇怪的功能描述
【发布时间】:2015-11-27 13:41:08
【问题描述】:

我在 Intellij Idea 14 社区版中创建了一个 Scala 工作表,现在尝试使用基本示例进行一些 scala 练习。

当我创建一个函数时,我在工作表编译输出中看到的函数描述显示了一些奇怪的东西,是我的 scala 编译器或 Intellij 有问题,或者它是在 scala 2.10.6 中显示函数定义的新方法(注意:我没有使用 SBT)

Java : 1.8 , 操作系统: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[], Improvement[]

【问题讨论】:

    标签: scala intellij-14


    【解决方案1】:

    在 Scala 中,当您想要将函数设为通用时,您可以使用泛型。例如,我下面的 tail 函数作用于一个列表,但我不想指定列表中的内容,只是事实上它是一个列表(我将给占位符 A)

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

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

    isGoodEnough[], raise[] 中的 [] 表明您没有涉及任何泛型

    【讨论】:

    • ok .. 那么这种显示函数定义的方式可能已添加到较新版本的 Scala 或 intellij 中。我记得当我在 intellij 13 中使用 Scala 2.9.1 进行练习时,它并没有以这种方式出现。
    • @Ashu 我想是的,它不在我的 repl 版本中,所以我怀疑它是 intellij 插件中的新东西
    • 实际上它不在 REPL 中,它来自我在 Intellij 中创建的 scala 工作表。在我的 REPL 中,它也很正常。我想我应该用相同的 scala 版本检查 Eclipse,如果它是由于 scala 或 Intellij 而出现的,这可能会消除疑问
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    • 2023-03-04
    相关资源
    最近更新 更多