在Apple文档的参考部分中,有很多这类事情的实例:
func runAction(_ action: SKAction!)
func runAction(_
action
: SKAction!)
的Objective-C“等效”是:
- (void)runAction:(SKAction *) action
- (void)runAction:(SKAction *)
令我惊讶的是,(在Swift参考资料中)下划线和“动作”用斜体字后要留一个空格可能很重要。
但是我不知道这是要传达什么。所以也许问题是…参考文献中使用的约定是否有参考文献?
-这是我在此引用中指向下划线使用的页面:https : //developer.apple.com/documentation/spritekit/sknode#//apple_ref/occ/instm/SKNode/runAction
Swift3对如何使用和命名函数/方法参数名称和参数标签进行了一些更改。这对这个问题及其答案有影响。@Rickster在回答有关_underscores函数的另一个问题方面做得非常出色,
两种答案都是正确的,但我想澄清一点。
_用于修改方法的外部参数名称行为。
_
在文档的“ 方法的本地和外部参数名称”部分中,它表示:
Swift 默认为 方法中 的第一个参数名称提供一个本地参数名称,默认情况下为第二个及后续参数名称 提供本地和外部参数名称 。
另一方面,默认情况下,函数没有外部参数名称。
例如,我们foo()在类中定义了此方法Bar:
foo()
Bar
class Bar{ func foo(s1: String, s2: String) -> String { return s1 + s2; } }
当您呼叫时foo(),它称为bar.foo("Hello", s2: "World")。
bar.foo("Hello", s2: "World")
但是 ,您可以通过_在s2声明的位置前面使用来覆盖此行为。
s2
func foo(s1: String, _ s2: String) -> String{ return s1 + s2; }
然后,当您调用时foo,可以像bar.foo("Hello", "World")没有第二个参数的名称一样简单地调用它。
foo
bar.foo("Hello", "World")
回到您的情况,这runAction是一种方法,因为它SKNode显然与type相关联。因此,放置一个_before参数action可以使您runAction无需外部名称即可进行调用。
runAction
SKNode
Swift 2.0更新
现在,函数和方法在局部和外部参数名称声明方面的工作 方式相同 。
现在,默认情况下通过使用外部参数名称(从第二个参数开始)来调用函数。该规则仅适用于纯Swift代码。
因此,通过_在 函数 前面提供,调用者将不必指定外部参数名称,就像您对 method 所做的一样。