在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与默认值一起使用?

最佳答案

您正在谈论的两个关键字inoutvar非常不同。

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/

10-11 21:24