2017-10-12 15 views
1

質問にはタイトルが入ります。私のクラスでは、 'never'というキーワードを使っていくつかのプロパティを宣言していますので、これらのプロパティの値はコンストラクタで一度しか設定できません。しかし、私は次のエラーを取得する:アクセスエラーをスローでマークされた'never'プロパティはカウンターの内部に設定することはできません

class TreeAbility 
{ 

     public var id(default, never):String; 
     public var maxLvl(default, never):Int; 

     public function new(id:String, maxLvl:Int) 
     { 
      Assert.assert(maxLvl > 0); 

      this.id = id; (*) 
      this.maxLvl = maxLvl; (*) 
      this.currentLvl = 0; 
     } 

} 

ライン(*):

は、問題のあるコードの

例を記述するためのフィールドまたは識別子%名%にアクセスできません

答えて

3

私はとは考えていません。書き込みプロパティは、変数の書き込み/設定がコンストラクタ内であっても許されないことを意味します。参照:

https://haxe.org/manual/class-field-property.htmlはおそらく、あなたがインスタンスフィールドの場合はhaXeの4に来ている最終キーワード、探している、それだけでクラスのコンストラクタからの変数に割り当てることができます。ここで確認:https://haxe.org/download/version/4.0.0-preview.2/https://github.com/HaxeFoundation/haxe/issues/6584

+0

_never_サイトの古いバージョンで詳しく説明しました。また、コンストラクタ内の書き込み不可能なプロパティに値を代入する例も含まれています。 でも、これまでのところいつかその方法で働いていたかもしれません。 http://old.haxe.org/ref/properties – Gulvan

+0

4.0.0の変更履歴を読んでください。今、私は、コンストラクターでstatic never-writeプロパティーしか設定できないという前提を持っています。 – Gulvan

+2

古いWebサイトでは、「never」プロパティーを使用している例は「numItems」に書き込まれていません。 "container.numItems"はシーンの裏側で "get_numItems()"を呼び出しますが、最終コードのインスタンスには "numItems"という変数は存在しません。 –

関連する問題