【发布时间】:2016-05-08 10:26:50
【问题描述】:
我在 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 如何处理变量的类作用域?
-
您的
e1和e2变量是Subtract()构造函数的本地变量。您需要在Subtract类中声明它们。 (我假设您熟悉 Python 或 Ruby 之类的语言,其中实例变量在函数中定义;这不是 Vala 的工作方式。您需要在方法旁边声明它们。) -
我不知道如何用 vala 语言声明它们。