为多个 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 在函数体内是非可选的,这样您以后就不必使用强制解包运算符了。