【问题标题】:Swift function, two names for one parameter [duplicate]Swift函数,一个参数的两个名称[重复]
【发布时间】:2015-11-09 10:51:01
【问题描述】:

我注意到一些方法,例如init(nibName nibName: String?, bundle nibBundle: NSBundle?) 对一个参数有两个“名称”,但第一个不能在内部方法中使用。在这种情况下,您不能使用bundle,但可以使用 nibBundle。例如,当我调用 super.init(nibName: nibName, bundle: bundle) 时,我收到错误“使用未解析的标识符 'bundle'”。

我的问题是:它(双重命名参数)是干什么用的?如何正确使用?

编辑:现在很明显它是外部参数名称的事情。 我有 UIViewController 的子类并覆盖以下方法。我不知道 nibBundle 从哪里来的?显然它没有在函数头中定义。

override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
   super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
   let someBundle = nibBundle
   print(someBundle)
}

【问题讨论】:

    标签: swift function parameters


    【解决方案1】:

    来自 Apple 的文档:

    有时在调用函数时命名每个参数很有用,以指示传递给函数的每个参数的用途。

    如果您希望函数的用户在调用您的函数时提供参数名称,请为每个参数定义一个外部参数名称,以及本地参数名称。在它支持的本地参数名称之前写一个外部参数名称,用空格分隔:

    func someFunction(externalParameterName localParameterName: Int) {
        // function body goes here, and can use localParameterName
        // to refer to the argument value for that parameter
    }
    

    外部参数名称简写

    如果您想为函数参数提供外部参数名称,并且本地参数名称已经是可以使用的适当名称,则无需为该参数编写两次相同的名称。相反,只写一次名称,并在名称前加上井号 (#)。这告诉 Swift 使用该名称作为本地参数名称和外部参数名称。

    https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html

    【讨论】:

      【解决方案2】:

      名字是公共名称,第二个是私有的(只能在函数中使用)

      【讨论】:

        猜你喜欢
        • 2016-11-15
        • 2018-07-30
        • 1970-01-01
        • 1970-01-01
        • 2021-05-12
        • 2015-12-14
        • 2018-04-20
        • 2011-03-31
        • 2017-06-11
        相关资源
        最近更新 更多