Swift 带参数标签的下标

Swift subscript with argument label

是否可以创建一个可以使用显式参数标签调用的下标?

struct MyType {
    subscript (label: Bool) -> String? {
        return nil
    }
}

let test = MyType()
let value1 = test[true] // ok
let value2 = test[label: true] // Extraneous argument label 'label:' in subscript

尝试使用标签导致错误:

Extraneous argument label 'label:' in subscript

新的关键路径功能看起来像是使用带有参数标签的下标,但这可能是 public 无法使用的编译器魔法:

let value = someThing[keyPath: \.property]

默认情况下不使用 subscript 中的外部参数标签,因此与普通函数不同,如果您想使用外部参数标签,则需要明确指定。

struct MyType {
    subscript(label label: Bool) -> String? {
        return nil
    }
}

let test = MyType()
let value = test[label: true]