在 Apple 文档的引用部分中有很多此类事情的实例:
func runAction(_
action
: SKAction!)
Objective-C 的“等价物”是:
- (void)runAction:(SKAction *)
action
让我感到震惊的是,(在 Swift 引用中)下划线后面有一个空格并且“action”用斜体书写可能很重要。
但我不知道这是想表达什么。所以也许问题是......是否有引用中使用的约定的引用?
-- 这是我在此引用中引用下划线使用的页面: https://developer.apple.com/documentation/spritekit/sknode#//apple_ref/occ/instm/SKNode/runAction
Swift 3 对函数/方法参数名称和参数标签的使用和命名方式进行了一些更改。这对这个问题及其答案有影响。 @Rickster 出色地回答了一个关于函数中 _underscores 的不同问题,从而解决了大部分问题,这里:Why do I need underscores in swift?
最佳答案
两个答案都是正确的,但我想澄清一点。
_
用于modify external parameter name behavior for methods .
在 Local and External Parameter Names for Methods文档的部分,它说:
Swift gives the first parameter name in a method a local parameter name by default, and gives the second and subsequent parameter names both local and external parameter names by default.
另一方面,默认情况下函数没有外部参数名称。
例如,我们在 Bar
类中定义了这个 foo()
方法:
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
类型相关联。因此,在参数 action
之前放置 _
允许您在没有外部名称的情况下调用 runAction
。
Swift 2.0 更新
函数和方法现在在本地和外部参数名称声明方面以相同的方式工作。
现在默认使用外部参数名称调用函数,从第二个参数开始。此规则仅适用于纯 Swift 代码。
因此,通过在 函数 前面提供 _
,调用者不必指定外部参数名称,就像您为 方法。
https://stackoverflow.com/questions/24437388/