2016-03-20 15 views
0

In Vala, kann ich den folgenden Code schreiben:Ausgang mit dem Fehlercode von init Block in Genie

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

Wie würde ich das gleiche in Genie zu tun? Die folgende funktioniert nicht:

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

... weil Sie einen Wert aus einem Hohlraumblock Rückkehr ist nicht erlaubt.

Antwort

1

Zur Zeit ist dies mit der init Methode nicht möglich. Siehe Bug 707233 - Allow exit status to be set from init function.

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

Alternativ, wenn Sie in einer Posix-Umgebung arbeiten, die folgenden kompilieren mit valac --pkg posix my_exit_example.gs:

Dies kann mit GLib des Process.exit() Anruf erreicht werden würde

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

Wenn Sie hinzufügen möchten Dies zum Genie-Parser, dann schauen Sie sich die parse_main_method_declaration() Methode in der vala/valagenieparser.vala Quelldatei an. Die Syntax müsste etwa lauten:

[indent=4] 
init:int 
    if args[ 1 ] == "secret" 
     return 0 
    else 
     return 1