当前位置: 首页 > 面试题库 >

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

汪庆
2023-03-14
问题内容

在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函数的另一个问题方面做得非常出色,


问题答案:

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

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

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

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 所做的一样。



 类似资料:
  • 问题内容: 我正在做一个redux教程,并且看到这样的呼叫: 在其他地方定义为: 下划线是什么“ _”?为什么使用它? 问题答案: 这是私有方法和变量的约定。在JavaScript中,没有类的真正隐私。 这意味着您不应在对象之外使用这些方法(以“ ” 开头)。从技术上当然可以,但是“ ”表示您不应该这样做。

  • 本文向大家介绍python中单下划线和双下划线分别是什么?相关面试题,主要包含被问及python中单下划线和双下划线分别是什么?时的应答技巧和注意事项,需要的朋友参考一下 name:一种约定,python内部的名字,是用来与用户自动以的名字区分开,防止冲突

  • >>> class MyClass(): ... def __init__(self): ... self.__superprivate = "Hello" ... self._semiprivate = ", world!" ... >>> mc = MyClass() >>> print mc.__superprivate Traceback (most recen

  • underline(resource $resourchHandle, Format::const $style): \Vtiful\Kernel\Format 示例 $format = new \Vtiful\Kernel\Format($fileHandle); $underlineStyle = $format->underline(Format::UNDERLINE_SI

  • 问题内容: 我有一个PHP脚本,用户将输入一个名称,例如:, 但是,某些用户将使用空格而不是下划线,因此我的问题是: 如何在PHP中使用下划线自动替换空格? 问题答案:

  • 问题内容: 而且我似乎无法理解这种变量声明: 究竟在做什么,为什么他们这样声明变量而不是 (我发现它是Go by Example:Maps的一部分) 问题答案: 它避免了必须为返回值声明所有变量。 它称为 空白标识符 。 如: (另一个’ ‘用例用于导入) 由于它丢弃了返回值,因此在您只想检查返回的值之一时很有用,例如“ EffectureGo,map ”中所示的“如何测试映射中键的存在? 要在地