【发布时间】:2016-04-06 11:12:54
【问题描述】:
我正在尝试使用精灵向一个小型应用程序添加一个对话框。这是一个打开文件对话框,单击headerbar button 时应打开。
Genie 中缺少示例,所以我现在正在尝试从 vala 中改编一些内容。但是,我发现的所有示例都使用了我无法转换为 Genie 的 switch 命令。
这是验证码:
public void on_open_image (Button self) {
var filter = new FileFilter ();
var dialog = new FileChooserDialog ("Open image",
window,
FileChooserAction.OPEN,
Stock.OK, ResponseType.ACCEPT,
Stock.CANCEL, ResponseType.CANCEL);
filter.add_pixbuf_formats ();
dialog.add_filter (filter);
switch (dialog.run ())
{
case ResponseType.ACCEPT:
var filename = dialog.get_filename ();
image.set_from_file (filename);
break;
default:
break;
}
dialog.destroy ();
}
这就是我从之前的代码中得出的结果:
def openfile (self:Button)
var dialog = new FileChooserDialog ("Open file",
window,
FileChooserAction.OPEN,
Stock.OK, ResponseType.ACCEPT,
Stock.CANCEL, ResponseType.CANCEL)
switch (dialog.run ())
case ResponseType.ACCEPT
var filename
filename = dialog.get_filename ()
image.set_from_file (filename)
break
default
break
dialog.destroy ()
它显然会在 case 语句中引发错误。如何在精灵中使用开关?
【问题讨论】:
-
将
switch视为if-else if链的简写,将switch之后的变量与每个case值进行比较。break退出当前案例主体;如果最后没有break,它将落入下一个case。我不认识 Genie,所以我不知道等价物是什么。