2015-12-09 14 views
5

Próbuję zamknąć narzędzie wiersza polecenia z kodami błędów w Swift 2.2 w systemie Linux. Podjęto próbę rozwiązania w this question, ale wciąż otrzymuję nierozwiązany identyfikator. Prosty skrypt test, który replikuje problem:Swift 2.2 w systemie Linux, "użycie nierozwiązanego identyfikatora" exit ""

$> cat exit_test.swift 
import Foundation 

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

pojawia się następujący komunikat o błędzie:

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

Wydaje się, że exit nie jest już przywiezione wraz z Foundation, ale jestem pewny, gdzie poszukaj sposobu wyjścia, podając konkretny kod błędu. Biegnę 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' jest importem z' Darwin' jako część standardowej biblioteki C. Nie ma odpowiednika Fundacji. – JAL

+1

Na platformach firmy Apple Fundacja importuje przejściowo 'Darwin'. W Linuksie (szorstkim) odpowiednikiem modułu 'Darwin' jest' Glibc', a Foundation może lub nie może zaimportować go dla ciebie. – rickster

+0

To jest w systemie Linux. "import Darwin" podnosi "brak takiego modułu" Darwin ". – Kellen

Odpowiedz

8

exit(3) jest podstawowym Unix (podobne) API. Na platformach Apple takie rzeczy są dostarczane przez moduł Darwin, a ponieważ kakao zależy w dużej mierze od tych rzeczy, import Foundation automatycznie dostanie również Darwin.

W systemie Linux podstawowe uniksowe (podobne) interfejsy API znajdują się w module Glibc, a import Foundation nie importuje tego za ciebie. Aby uzyskać exit(3) i inne tego typu rzeczy, musisz sam/a uzyskać import Glibc.

Powiązane problemy