Scala でメソッドを定義するときにmain
を使用する必要がないのはなぜ=
ですか?
例:
def main(args:Array[String]) {
...
しかし、別の関数を定義したい場合は、それが必要です。
def main(args:Array[String]) **=** {
...
誰かがこの構文を説明できますか?
Scala でメソッドを定義するときにmain
を使用する必要がないのはなぜ=
ですか?
例:
def main(args:Array[String]) {
...
しかし、別の関数を定義したい場合は、それが必要です。
def main(args:Array[String]) **=** {
...
誰かがこの構文を説明できますか?
Scala では、メソッド宣言の等号は、メソッドが何かを返すことをコンパイラに伝えます。等号が表示されない場合、コンパイラはメソッドが何も返さないことを認識しています。void
これはJava のメソッドに相当します。Scala では、何も返さないことは を返すことと同じUnit
です。
scala> def noEquals(x: Int) { x + 1 }
noEquals: (x: Int)Unit
scala> val y = noEquals(5)
y: Unit = ()
等号が表示される例と比較してください。
scala> def hasEquals(x: Int) = { x + 1 }
hasEquals: (x: Int)Int
scala> val z = hasEquals(5)
z: Int = 6
Java では、メイン メソッドは何も返しません ( のようvoid
に として宣言されていpublic static void main(String[] args)
ます)。したがって、Scala バージョンでは等号が省略されています。
また、メソッドが返される限り、等号を使用してメイン メソッドを記述できることにも注意してくださいUnit
(ただし、これは規則に反します)。また、等号は他のメソッドには「必須」ではありません...ものを返す必要があるものだけです。何も返さないメソッドを作成している場合は、等号を省略してもまったく問題ありません (そして適切です)。