私は2つの方法で両方の変数を宣言しました。しかし出力は "名前"と同じです。次に、両方の宣言の違いは何ですか?メモリ割り当てに違いはありますか?スカラーの両方の宣言の間の差異は何ですか?
var x="name"
println(x)
var y:String="name"
println(y)
私は2つの方法で両方の変数を宣言しました。しかし出力は "名前"と同じです。次に、両方の宣言の違いは何ですか?メモリ割り当てに違いはありますか?スカラーの両方の宣言の間の差異は何ですか?
var x="name"
println(x)
var y:String="name"
println(y)
メモリ割り当てに関しては違いはありません。
1 Scalaのコンパイラはあなた
あなたが明示的にvar x: String = "hello"
明示的な型宣言がどこいくつかのケースでは重要であり、コンパイラを導くためにタイプを発表しているケース2では
var x = "hello"
の型を推測した場合コンパイラ推論型では十分ではありません。例えば、
var a = 1
コンパイラは、Intの型を推論します。しかし、私がこの場合にAnyVal
であることを欲しければ、私は言う必要があります。var a: AnyVal = 1
技術的な部分に加えて、良いコードの点でいくつかの利点があります。 val x = somefunction(...)のような呼び出しがある場合、コンテキストによって合理的でない場合は、直接どのタイプであるかを見ることができません。 – sascha10000
デフォルトでは、 'var'の代わりに' val'を使うことをお勧めします。構築された後に物事を変更することができないことを知ったときに、あなたのコードを推論しやすくします。 – Reactormonk