为多个 swift 参数设置相同的值
setting the same value for multiple swift parameters
我有一个类似这样的函数:
func stamp(documentURL: NSURL, saveURL: NSURL) {
...}
我希望能够允许某人根据需要设置这两个参数。但是如果他们只设置第一个参数,我想要 saveURL = documentURL。有没有办法在函数声明中做到这一点?
SWIFT 2
func stamp(documentURL: NSURL, var saveURL: NSURL? = nil) {
if saveURL == nil {
saveURL = documentURL
}
}
SWIFT 3
func stamp(documentURL: NSURL, saveURL: NSURL? = nil) {
var saveURL = saveURL
if saveURL == nil {
saveURL = documentURL
}
}
在Swift 2.3, 3:
func stamp(documentURL: NSURL, saveURL: NSURL?) {
var saveURL = saveURL
if saveURL == nil {
saveURL = documentURL
}
}
无法在函数声明本身中执行此操作,但是您可以通过使用默认值为 nil
的可选参数和 [=13] 在函数主体的一行中执行此操作=].
func stamp(documentURL: NSURL, saveURL: NSURL? = nil) {
let saveURL = saveURL ?? documentURL
// ...
}
这样做的好处是 saveURL
在函数体内是非可选的,这样您以后就不必使用强制解包运算符了。
我有一个类似这样的函数:
func stamp(documentURL: NSURL, saveURL: NSURL) {
...}
我希望能够允许某人根据需要设置这两个参数。但是如果他们只设置第一个参数,我想要 saveURL = documentURL。有没有办法在函数声明中做到这一点?
SWIFT 2
func stamp(documentURL: NSURL, var saveURL: NSURL? = nil) {
if saveURL == nil {
saveURL = documentURL
}
}
SWIFT 3
func stamp(documentURL: NSURL, saveURL: NSURL? = nil) {
var saveURL = saveURL
if saveURL == nil {
saveURL = documentURL
}
}
在Swift 2.3, 3:
func stamp(documentURL: NSURL, saveURL: NSURL?) {
var saveURL = saveURL
if saveURL == nil {
saveURL = documentURL
}
}
无法在函数声明本身中执行此操作,但是您可以通过使用默认值为 nil
的可选参数和 [=13] 在函数主体的一行中执行此操作=].
func stamp(documentURL: NSURL, saveURL: NSURL? = nil) {
let saveURL = saveURL ?? documentURL
// ...
}
这样做的好处是 saveURL
在函数体内是非可选的,这样您以后就不必使用强制解包运算符了。