【问题标题】:What is the benefits of external names for swift function?swift函数的外部名称有什么好处?
【发布时间】:2016-06-18 12:57:47
【问题描述】:

我有点知道函数中的外部名称是什么。但对于这个问题,我无法给出一个准确、清晰和令人信服的答案:外部名称的目的是什么,何时使用它,使用它有什么好处。

func RandomInt(minimum min: Int, maximum max: Int) -> Int {
    if max < min { return min }
    return Int(arc4random_uniform(UInt32((max - min) + 1))) + min
}

我的理解 在上面的代码中,minimummaximum 是外部名称。它们“绑定”到内部名称(minmax)。调用函数时,外部名称应写入参数列表。当您使用该函数时,这个长而描述性的外部名称提高了代码的可读性。

如果有任何错误,请纠正我的理解,如果需要,请添加更多内容

非常感谢。

【问题讨论】:

    标签: swift function


    【解决方案1】:

    根据swift documentation

    使用外部参数名称可以允许调用函数 以富有表现力的、类似句子的方式,同时仍然提供 功能体,可读性强,意图清晰。

    例如,

    func sayHello(to person: String, and anotherPerson: String) -> String {
        return "Hello \(person) and \(anotherPerson)!"
    }
    
    print(sayHello(to: "Bill", and: "Ted"))
    

    【讨论】:

    • 非常感谢生动的例子和解释。它确实提高了编码的可读性,使其更接近自然语言。
    【解决方案2】:

    需要外部参数主要是为了与 Obj-C 方法兼容,因为 Obj-C 也在使用它们(尽管它们的名称不同),但是它们也有助于方法调用者上下文的可读性。

    请注意,外部参数实际上是方法名称的一部分,因此您可以通过更改外部参数来重载方法。

    命名参数的另一个有趣点是提供默认值的能力:

    func test(x: Int = 0, y: Int = 1, z: Int = 2) {
        print("x: \(x), y: \(y), z: \(z)")
    }
    
    // we can skip a parameter in the middle!
    test(x: 10, z: 5)
    

    顺便说一下,命名参数在许多编程语言中都很常见(请参阅wikipedia 上的列表)。不过,每种语言的实现方式略有不同。

    【讨论】:

    • 所以因为 Obj-C 有外部名称,所以 swift 还添加了与 Obj-C 的兼容性。这可能是一个糟糕的问题:我了解到创建 Swift 的想法是使用它来更改 Obj-C。如果是这样,为什么 swift 必须注意 Obj-C 的兼容性?
    • @SLN 语言是次要的。在一个平台上,重要的是所有框架(Foundation、UIKit 等)。它们都是用 Obj-C 编写的。如果 Apple 要推出一种新语言,所有这些框架都必须与 Swift 兼容,因此 Obj-C 和 Swift 之间的互操作性非常重要。
    • hmmmm...非常有说服力的解释!非常感谢您的帮助")
    猜你喜欢
    • 2010-11-12
    • 1970-01-01
    • 2017-09-19
    • 2015-08-01
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多