2

scala コンパイラで次のエラーに遭遇しました。ジラで問題を見つけることができませんでした。したがって、これが既知の問題であるかどうかを最初に尋ねることにしました。

私は次の2つの方法から始めました。

  def getName: String = getString match {
    case None => return ""
    case Some(str) => return str
  }

  def getString: Option[String] = Some("abc")

次に、最初の方法を次のように変更しました

  lazy val getName: String = getString match {
    case None => return ""
    case Some(str) => return str
  }

残念ながら、return ステートメントを削除するのを忘れていました。この場合、scala コンパイラは「メソッド定義の外に戻る」というメッセージで停止するはずですが、実際に行ったことは次のとおりです。

[ant:scalac] error: uncaught exception during compilation: java.lang.NullPointerException

[ant:scalac] java.lang.NullPointerException
[ant:scalac]    at scala.reflect.internal.Trees$class.Select(Trees.scala:1066)
[ant:scalac]    at scala.reflect.internal.SymbolTable.Select(SymbolTable.scala:13)

バグのようです。そうじゃない?

4

1 に答える 1