一尘不染

Swift何时需要参数标签?

swift

在回答这个问题时,谈到要调用时需要参数标签init。这在Swift中很正常。

class Foo {
    init(one: Int, two: String) { }
}

let foo = Foo(42, "Hello world") // Missing argument labels 'one:two:' in call

但是,陌生力量在起作用:

extension Foo {
    func run(one: String, two: [Int]) { }
}

foo.run(one: "Goodbye", two: []) // Extraneous argument label 'one:' in call

要在此处使用参数标签,必须明确声明。

在文档中,我还没有看到非常详尽的解释。哪些种类的类/实例/全局函数需要自变量标签?是否始终使用参数标签导出和导入Obj-C方法?


阅读 389

收藏
2020-07-07

共1个答案

一尘不染

从Swift 3.0开始,这种情况再次发生了变化:除非您使用外部名称明确选择退出,否则所有方法,函数和初始化器都需要为 所有
参数使用参数标签_。这意味着addChildViewController(_:)现在这样的方法是这样写的:

func addChildViewController(_ childController: UIViewController)

这是作为Swift Evolution流程的一部分提出和批准的,并已在SR-961中实施。

2020-07-07