在Vala中,我可以编写以下代码:
int main(string[] args) {
if (args[1] == "secret") {
return 0;
} else {
return 1;
}
}
我如何在精灵中做同样的事情?以下不起作用:
init
if args[1] == "secret"
return 0
else
return 1
...因为不允许从void块返回值。
答案 0 :(得分:2)
目前使用init
方法无法做到这一点。请参阅Bug 707233 - Allow exit status to be set from init function。
这可以通过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