初期値なしで変数を宣言する 質問する

初期値なしで変数を宣言する 質問する

このScalaチュートリアル初期値なしで変数を宣言することについては、次のように述べています。

変数に初期値を割り当てない場合は、次のように有効になります。

var myVar :Int;  
val myVal :String;

しかし、Scala REPL でそのコードを試すと、次のエラーが発生します。

scala> var myVar :Int;
<console>:10: error: only classes can have declared but undefined members
(Note that variables need to be initialized to be defined)
       var myVar :Int;
           ^

scala> val myVal :String;
<console>:10: error: only classes can have declared but undefined members
       val myVal :String;

なぜでしょうか? このチュートリアルは Scala の古いバージョン用でしょうか?
このチュートリアルが書かれた Scala の特定のバージョンを見つけることができませんでしたが、私は OpenJDK 64 ビット、Java 1.8.0_66 で Scala バージョン 2.11.7 を実行しています。


  • チュートリアルは古くなっていますか、それとも私の環境に問題があるのでしょうか?

  • 変数 (var または val) を初期化せずに宣言することは可能ですか?

ベストアンサー1

エラーは正しいです。これは抽象クラスまたは特性でのみ実行できます。チュートリアルでは、そのコードを抽象クラス内で記述することを前提としている可能性があります。

変数を何らかのデフォルト値に初期化することが可能です。

var i: Int = _
var s: String = _

しかし、それは本質的には次のことと同じです。

var i: Int = 0
var s: String = null

おすすめ記事