在Swift 2中,可以执行以下操作:
class SomeType {
static let singletonInstance = SomeType()
func someFunction(var mutableParameter: SomeType = SomeType.singletonInstance) {
...
}
}
但是在Swift 3中,将针对函数参数删除
var
关键字,而使用inout
。使用inout
关键字,我无法获得与上述相同的结果。class SomeType {
static let singletonInstance = SomeType()
func someFunction(inout mutableParameter: SomeType = SomeType.singletonInstance) {
...
}
}
相反,我收到错误消息“无法将类型'SomeType'的默认参数值转换为类型'inout SomeType'”
我的问题是是否可以将
inout
与默认值一起使用? 最佳答案
您正在谈论的两个关键字inout
和var
非常不同。
从Apple Documentation:
因此,您不能为inout
参数提供默认值,因为这会使inout
属性完全无用。
您可以做的就是接收一个普通(恒定)参数,并将作为默认值,并用这种方式声明一个具有相同名称的新var
(来自Swift Evolution's Removing var from Function Parameters Proposal的代码,并带有默认参数):
func foo(i: Int = 5) {
var i = i
// now you can change i as you'd like
}
关于swift - 使用Swift将默认值添加到输入参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39245597/