0

我试图在 scala 中运行一个简单的程序,其中涉及 scala 中的隐式类。程序的预期输出是“CZF”,即每个字符加 1。但是,当我在 Eclipse IDE 上执行它时,它既不返回任何结果,也不返回错误。

object ObjectImplitclass extends App{
  implicit class StringIncImplicitClass(s: String){
    def increment = s.map(c => (c+1).toChar)
    val result = "BYE".increment
    print(result)
}
}

当我在终端上尝试以下代码块时:

implicit class StringIncImplicitClass(s: String){
def increment = s.map(c => (c+1).toChar)
val result = "BYE".increment

它返回给我“CZF”。我是 scala 语法的新手,任何人都可以帮助我了解为什么我无法在 IDE 上看到结果。

4

1 回答 1

3

在 REPL 中,您"BYE".increment在定义隐式类后立即进行评估,因此结果会立即显示。

在 IDE 中,您编写了:

object ObjectImplitclass extends App{
  implicit class StringIncImplicitClass(s: String){
    def increment = s.map(c => (c+1).toChar)
    val result = "BYE".increment
    print(result)
  }
}

意思是你定义了隐式类......但你从来没有使用过任何东西。如果此代码正是您在 IDE 中所拥有的,那么它应该是

object ObjectImplitclass extends App {
  implicit class StringIncImplicitClass(s: String) {
    def increment = s.map(c => (c+1).toChar)
  }
  val result = "BYE".increment
  print(result)
}

查看括号位置的差异。

于 2020-04-10T15:06:14.053 回答