一尘不染

Swift References中的_下划线代表什么?

swift

在Apple文档的参考部分中,有很多这类事情的实例:

func runAction(_ action: SKAction!)

的Objective-C“等效”是:

- (void)runAction:(SKAction *) action

令我惊讶的是,(在Swift参考资料中)下划线和“动作”用斜体字后要留一个空格可能很重要。

但是我不知道这是要传达什么。所以也许问题是…参考文献中使用的约定是否有参考文献?

-这是我在此引用中指向下划线使用的页面:https : //developer.apple.com/documentation/spritekit/sknode#//apple_ref/occ/instm/SKNode/runAction

更新资料

Swift3对如何使用和命名函数/方法参数名称和参数标签进行了一些更改。这对这个问题及其答案有影响。@Rickster在回答有关_underscores函数的另一个问题方面做得非常出色,


阅读 308

收藏
2020-07-07

共1个答案

一尘不染

两种答案都是正确的,但我想澄清一点。

_用于修改方法的外部参数名称行为

在文档的“
方法的本地和外部参数名称”部分中,它表示:

Swift 默认为 方法中 的第一个参数名称提供一个本地参数名称,默认情况下为第二个及后续参数名称 提供本地和外部参数名称

另一方面,默认情况下,函数没有外部参数名称。

例如,我们foo()在类中定义了此方法Bar

class Bar{
    func foo(s1: String, s2: String) -> String {
        return s1 + s2;
    }
}

当您呼叫时foo(),它称为bar.foo("Hello", s2: "World")

但是 ,您可以通过_s2声明的位置前面使用来覆盖此行为。

func foo(s1: String, _ s2: String) -> String{
    return s1 + s2;
}

然后,当您调用时foo,可以像bar.foo("Hello", "World")没有第二个参数的名称一样简单地调用它。

回到您的情况,这runAction是一种方法,因为它SKNode显然与type相关联。因此,放置一个_before参数action可以使您runAction无需外部名称即可进行调用。

Swift 2.0更新

现在,函数和方法在局部和外部参数名称声明方面的工作 方式相同

现在,默认情况下通过使用外部参数名称(从第二个参数开始)来调用函数。该规则仅适用于纯Swift代码。

因此,通过_函数 前面提供,调用者将不必指定外部参数名称,就像您对 method 所做的一样。

2020-07-07