我有一个类似的功能:
func stamp(documentURL: NSURL, saveURL: NSURL) {
...}
我希望能够允许某人根据需要设置这两个参数。但如果他们只设置第一个参数,我就像saveURL = documentURL。在函数声明中有没有办法做到这一点?
答案 0 :(得分:3)
在Swift 2.3,3:
中ObjectMapper.convertValue(Object, JavaType)
答案 1 :(得分:1)
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
}
}
答案 2 :(得分:1)
在函数声明本身中无法做到这一点,但是你可以通过使用默认值为nil
的可选参数在函数体的单行中执行此操作,并且{ {3}}
func stamp(documentURL: NSURL, saveURL: NSURL? = nil) {
let saveURL = saveURL ?? documentURL
// ...
}
这样做的好处是saveURL
在函数体中是非可选的,这样您以后就不必使用强制解包操作符。