私はValaにGUIプログラムを書いています。私はそれをコンパイルすると、コンパイラはこのエラーを生成します。フィールドの宣言方法は?
The name e1 does not exist in the context of Subtract.minus
コードは次のとおりです。
using Gtk;
class Subtract:Window{
public Subtract(){
this.title="Subtract program";
this.destroy.connect(Gtk.main_quit);
var e1=new Entry();
var e2=new Entry();
var lbl=new Label("Result");
var btn=new Button.with_label("Subtract");
var box=new Box(Gtk.Orientation.VERTICAL,5);
box.add(e1);
box.add(e2);
box.add(lbl);
box.add(btn);
this.add(box);
btn.clicked.connect(minus);
}
public void minus(){
int a=int.parse(e1.get_text());
int b=int.parse(e2.get_text());
int result=a-b;
lbl.set_label(result.to_string());
}
public static int main(string[]args){
Gtk.init(ref args);
var win=new Subtract();
win.show_all();
Gtk.main();
return 0;
}
}
にはどうすればminus
方法から変数にアクセスできるようにすることができます。
私はValaを使ったことがありませんが、Subtractはe1が作成されるクラススコープであり、マイナスはそのクラスのメンバーであると仮定します。 Valaは変数のクラススコープをどのように扱いますか? – oldtechaa
あなたの 'e1'と' e2'変数は 'Subtract()'コンストラクタに対してローカルです。代わりに 'Subtract'クラスの中でそれらを宣言する必要があります。 (あなたは、PythonやRubyのような言語に慣れていて、インスタンス変数は関数内で定義されていると仮定しています;それはValaの仕組みではありません)。 – andlabs
valaで宣言する方法は分かりません。言語。 – rahi