我正在尝试在Linux上的Swift 2.2中退出带有错误代码的命令行实用程序。我已尝试在this question中解决该问题,但仍得到一个 Unresolved 标识符。复制问题的简单测试脚本:
$> cat exit_test.swift
import Foundation
guard 0 == 1 else { exit(0) }
我收到以下错误消息:
$> swift exit_test.swift
exit_test.swift:3:21: error: use of unresolved identifier 'exit'
guard 0 == 1 else { exit(0) }
似乎
exit
不再与Foundation
一起导入,但是我不确定下一步该如何退出以给出特定的错误代码。我正在运行Swift 2.2-dev
:$> swift --version
Swift version 2.2-dev (LLVM 46be9ff861, Clang 4deb154edc, Swift 778f82939c)
Target: x86_64-unknown-linux-gnu
最佳答案
exit(3)
是基本的Unix(like)API。在Apple平台上,此类内容由Darwin
模块提供,并且由于Cocoa严重依赖于这些内容,因此import Foundation
也自动为您获取Darwin
。
在Linux上,Glibc
模块中包含基本的Unix(like)API,而import Foundation
不会为您临时导入该API。因此,要获取exit(3)
和其他类似的东西,您需要自己进行import Glibc
。