【发布时间】:2018-07-06 12:29:41
【问题描述】:
我有时会看到一个函数接受一个对象作为参数,它有“!”作为后缀。 我知道这意味着参数是隐式展开的可选参数。 但我不知道这两种情况有什么区别。即用“!”定义参数并且没有'!'。
class Cat {
var name: String
init(name: String) {
self.name = name
}
}
func tame(cat: Cat) {
print("Hi, \(cat.name)")
}
func tame2(cat: Cat!) {
print("Hi, \(cat.name)")
}
let cat = Cat(name: "Jack")
tame(cat: cat)
tame2(cat: cat)
因此,函数 tame 和 tame2 之间没有区别。 如果参数有可能为nil,我应该把参数定义为可选的吧?
func tame3(cat: Cat?) {
if let cat = cat {
print("Hi, \(cat.name)")
}
}
在什么情况下,我应该将函数的参数定义为像 tame2 这样的隐式解包可选?
【问题讨论】:
-
谢谢 Martin R。我没有找到帖子。
标签: swift function parameters optional