我正在尝试在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

08-04 16:37