如何在 CLI 中使用 xcrun swift 传递参数?
How do you pass an argument with xcrun swift in CLI?
安装 Xcode 后,我想在命令行中编译 运行 一个 .swift 文件。明白了,这个是可以做到的:
xcrun swift sayHello.swift
但是,我想在命令行中传递一个参数。
例如,在 sayHello.swift 中使用以下函数:
func sayHello(personName: String) -> String {
let greeting = "Hello, " + personName + "!"
return greeting
}
你如何传递参数,例如鲍勃?
这看起来很有希望:
-D Specifies one or more build configuration options
xcrun swift -D sayHello(Bob) sayHello.swift
但是,这不是我所期望的。
您可以将任意 字符串 作为命令行参数传递给进程,但是您
不能期望它们被执行为 code(如 sayHello(Bob)
)。
在Swift中,Process.arguments
是一个包含所有命令行的字符串数组
给过程的论据。第一个元素(在索引 0 处)是
可执行文件本身的路径,以及额外的命令行
参数从索引 1 开始:
// sayHello.swift
func sayHello(personName: String) -> String {
let greeting = "Hello, " + personName + "!"
return greeting
}
let args = Process.arguments
for i in 1 ..< args.count {
let name = args[i]
let greeting = sayHello(name)
println(greeting)
}
示例:
$ xcrun swift sayHello.swift Peter Paul Mary
Hello, Peter!
Hello, Paul!
Hello, Mary!
安装 Xcode 后,我想在命令行中编译 运行 一个 .swift 文件。明白了,这个是可以做到的:
xcrun swift sayHello.swift
但是,我想在命令行中传递一个参数。
例如,在 sayHello.swift 中使用以下函数:
func sayHello(personName: String) -> String {
let greeting = "Hello, " + personName + "!"
return greeting
}
你如何传递参数,例如鲍勃? 这看起来很有希望:
-D Specifies one or more build configuration options
xcrun swift -D sayHello(Bob) sayHello.swift
但是,这不是我所期望的。
您可以将任意 字符串 作为命令行参数传递给进程,但是您
不能期望它们被执行为 code(如 sayHello(Bob)
)。
在Swift中,Process.arguments
是一个包含所有命令行的字符串数组
给过程的论据。第一个元素(在索引 0 处)是
可执行文件本身的路径,以及额外的命令行
参数从索引 1 开始:
// sayHello.swift
func sayHello(personName: String) -> String {
let greeting = "Hello, " + personName + "!"
return greeting
}
let args = Process.arguments
for i in 1 ..< args.count {
let name = args[i]
let greeting = sayHello(name)
println(greeting)
}
示例:
$ xcrun swift sayHello.swift Peter Paul Mary Hello, Peter! Hello, Paul! Hello, Mary!