【问题标题】:How would a switch interface look in Genie?开关界面在 Genie 中的外观如何?
【发布时间】: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,所以我不知道等价物是什么。

标签: gtk genie


【解决方案1】:

啊,我明白了。 Vala 中的switch 等价于case...when。上例中的开关是

case dialog.run()
    when ResponseType.ACCEPT
        var filename = dialog.get_filename()
        image.set_from_file(filename)
    default
        pass

【讨论】:

  • 空语句将使用pass 关键字,但它不是必需的。为什么有一个什么都不做的默认值?省略它。
  • @AlThomas 做一个完整的字面翻译,不遗漏任何内容,以进行演示。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-07
  • 2014-06-26
  • 2017-04-26
相关资源
最近更新 更多