1. ホーム
  2. scala

[解決済み] Scalaのメソッド宣言で等号を使用するのはいつですか?

2023-04-15 10:09:17

質問

等号で。

object HelloWorld {
  def main(args: Array[String]) = {
    println("Hello!")
  }
}

等号なし。

object HelloWorld {
  def main(args: Array[String]) {
    println("Hello!")
  }
}

上記のプログラムはどちらも同じように実行されます。ブログ記事中の Scalaで嫌いなもの 等号がない場合、このメソッドは Unit (Javaの void と同じ)なので、値を返すメソッドには等号を使わなければなりません。しかし、値を返さないメソッドはどちらで書いてもよい。

値を返さないScalaのメソッドで等号を使用するためのベストプラクティスは何ですか?

どのように解決するのですか?

実は、私はダニエルにかなり強く反対しています。私は、非等号構文は は決して を使うべきだと思います。もしあなたのメソッドがAPIとして公開されており、誤って間違った型を返してしまうことを心配しているのであれば、明示的な型アノテーションを追加してください。

object HelloWorld {
  def main(args: Array[String]): Unit = {
    println("Hello!")
    123
  }
}

等号でない構文はより短く、見た目もすっきりしていますが、混乱の可能性を増やすだけだと思います。私は時々、等号を追加するのを忘れて、私のメソッドが値を返していると信じていましたが、実際にはUnitを返していたのです。非等号と等号を挿入するタイプの構文は視覚的に非常に似ているため、この問題を見逃しがちなのです。

たとえそれが少し多くの仕事を費やすとしても、それらが重要であるとき、私は明示的な型注釈を好みます (すなわち、公開されたインターフェイス)。