2015-12-09 25 views
5

Sto tentando di uscire da un'utilità della riga di comando con i codici di errore in Swift 2.2 su Linux. Ho provato la soluzione in this question, ma sto ancora ricevendo un identificatore non risolto. Un semplice script di test che replica il problema:Swift 2.2 su Linux, "uso dell'identificatore non risolto 'exit'"

$> cat exit_test.swift 
import Foundation 

guard 0 == 1 else { exit(0) } 

ottengo il seguente messaggio di errore:

$> swift exit_test.swift 
exit_test.swift:3:21: error: use of unresolved identifier 'exit' 
guard 0 == 1 else { exit(0) } 

Sembra che exit non è importato con Foundation, ma sono sicuri di dove guarda avanti per un modo per uscire dando un codice di errore specifico. Sto correndo Swift 2.2-dev:

$> swift --version 
Swift version 2.2-dev (LLVM 46be9ff861, Clang 4deb154edc, Swift 778f82939c) 
Target: x86_64-unknown-linux-gnu 
+0

'exit' è un'importazione da' Darwin' come parte della libreria standard C. Non esiste un equivalente di fondazione. – JAL

+1

Su piattaforme Apple, la Fondazione importa "Darwin". Su Linux, l'equivalente (approssimativo) del modulo 'Darwin' è' Glibc', e Foundation può o non può importarlo per te. – rickster

+0

Questo è su Linux. 'import Darwin' solleva" nessun modulo "Darwin" ". – Kellen

risposta

8

exit(3) è di base Unix (come) API. Sulle piattaforme Apple, queste cose sono fornite dal modulo Darwin e dal momento che Cocoa dipende fortemente da queste cose, lo import Foundation ti dà automaticamente anche Darwin.

Su Linux, le API Unix (come) di base sono nel modulo Glibc e import Foundation non lo importa in modo transitivo per te. Quindi, per ottenere exit(3) e altre cose simili, devi provvedere personalmente allo import Glibc.