【问题标题】:"with" in parameter names in Swift initialisersSwift 初始化程序中的参数名称中的“with”
【发布时间】:2014-09-03 12:18:02
【问题描述】:

这个初始化器会导致报错"with" is implied for the first parameter of an initialiser; did you mean name?

init(withName: String){

}

我不确定这意味着什么,如果它自动提供 withName 外部参数名称,如果我称它为名称或什么...

如果我把它改成

init(name: String){

}

任何将其称为init(with: "joe")init(withName: "Joe") 的尝试都将失败。所以我不知道错误消息告诉我什么以及如何声明它,所以我称之为init(withName: "joe")

【问题讨论】:

    标签: cocoa swift initialization


    【解决方案1】:

    在 Swift 中,您不应将 with 添加到初始化程序中。初始化程序应该是init(name:),你应该把它称为Object(name: "joe")

    这是因为 Swift 方法如何桥接到 ObjC。在 ObjC 中,该初始化程序将自动转换为 initWithName:。如果您将其命名为init(withName:),它将变为initWithWithName:

    【讨论】:

    • 多么糟糕的功能。 :(
    • 同意。错误消息具有误导性。它应该说“初始化程序的第一个参数不能以'with'开头,否则当你从Objective-C调用它时它会看起来很有趣。”
    猜你喜欢
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    • 2011-08-06
    • 2017-02-06
    • 2019-11-26
    • 2018-05-19
    相关资源
    最近更新 更多