在Xcode 6(Beta)中,有Swift编译器 - 搜索路径,导入路径。它做了什么?
答案 0 :(得分:20)
只是为了分享我在连接点的日子里发现的东西。 简短回答,导入搜索路径指定Swift查找和导入模块的位置。
什么是模块?模块通过用更健壮,更有效的语义模型替换文本预处理器包含模型来改进对软件库API的访问。从用户的角度来看,代码看起来只是略有不同,因为一个使用导入声明而不是#include预处理器指令,如下所示:
import std.io
它于2012年11月由Apple在LLVM DevMeeting上首次公布。你仍然可以在这里找到Doug Gregor的演讲(Video和PDF)。在WWDC 2013上,语义导入与iOS 7一起被引入,@import
仅适用于它。因此决定模块成为新语言Swift的一部分。可以找到模块的文档here。
要尝试一下,下面是使用HTML Tidy库模块创建示例应用项目的步骤。
在Xcode 6中创建一个Swift项目(OS X或iOS)
创建module.map
文件,并将其放在目录中。例如。 /Users/vladof/module/
module tidy [system] {
header "/usr/include/tidy/tidy.h"
header "/usr/include/tidy/buffio.h"
link "tidy"
export *
}
转到构建设置,设置Swift Compiler - Search Paths
> Import Paths
到您将module.map
文件放入。/Users/vladof/module
的目录中。然后,您可以使用import tidy
并利用HTML Tidy库的有用API,即使在Swift REPL中也是如此。
导入
import tidy
示例代码
var input: CString = "<node>upper case node</node>"
var tdoc: TidyDoc = tidyCreate() // Initialize "document"
var rc: Int32 = -1
var ok = tidyOptSetBool(tdoc, TidyUpperCaseTags, yes) // Convert tags to upper cases
ok = tidyOptSetBool(tdoc, TidyXmlTags, yes) // Convert to XML
if ok.value == 1 {
rc = tidyParseString(tdoc, input) // Parse the input
if rc >= 0 {
rc = tidyCleanAndRepair(tdoc) // Tidy it up
}
if rc >= 0 {
rc = tidySaveStdout(tdoc) // Pretty print to console
}
}
打印
<NODE>upper case node</NODE>
我也尝试过curl
模块。实际上,在我测试时没有导入某些API,例如curl_easy_setopt()
,让我们希望他们在不久的将来赶上来。但我很肯定这为Swift开发者打开了一扇门。