Scala 中的隐式 class 未按预期显示输出

Implicit class in scala not showing output as expected

我正在尝试 运行 scala 中涉及隐式 class 的简单程序。该程序的预期输出是 "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.

上看不到结果

在 REPL 中,您在定义隐式 class 后立即评估 "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)
  }
}

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

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

查看括号位置的差异。