0

在 Vala 中,我可以编写以下代码:

int main(string[] args) {
    if (args[1] == "secret") {
        return 0;
    } else {
        return 1;
    }
}

我将如何在 Genie 中做同样的事情?以下不起作用:

init
    if args[1] == "secret"
        return 0
    else
        return 1

...因为不允许从 void 块返回值。

4

1 回答 1

2

目前,使用该init方法是不可能的。请参阅错误 707233 - 允许从 init 函数设置退出状态

这可以通过 GLib 的Process.exit()调用来实现:

[indent=4]
init
    if args[ 1 ] == "secret"
        Process.exit( 0 )
    else
        Process.exit( 1 )

或者,如果您在 Posix 环境中工作,请使用以下命令编译valac --pkg posix my_exit_example.gs

[indent=4]
init
    if args[ 1 ] == "secret"
        Process.exit( Posix.EXIT_SUCCESS )
    else
        Process.exit( Posix.EXIT_FAILURE )

如果您想将此添加到 Genie 解析器,请查看vala/valagenieparser.vala源文件中的parse_main_method_declaration()方法。语法必须类似于:

[indent=4]
init:int
    if args[ 1 ] == "secret"
        return 0
    else
        return 1
于 2016-03-20T15:04:53.010 回答