在基于swift的应用程序中与enum成员交互

时间:2015-03-30 20:18:24

标签: swift object enums reference sprite-kit

我开始自学,我现在正在浏览游戏的例子。我遇到了一系列我认为特殊的代码

scene.scaleMode = .ResizeFill

在我习惯的语言中(C / Java)“。” notation用于引用某种结构/对象,但我不确定这行代码是什么,因为在“。”之前没有明确指定的对象。

有关澄清此非指定“。”的信息。参考,或何时/如何使用,将是伟大的

P.S。我在Xcode中使用精灵套件

2 个答案:

答案 0 :(得分:1)

在Swift中,就像你提到的其他语言一样,'。'是会员访问运营商。您所指的语法是Swift允许的一种简写,因为它是一种类型安全的语言。

编译器识别出您指定的属性是SKSceneScaleMode类型,因此您分配的值必须是该类型的枚举值之一 - 因此可以省略枚举名称。

答案 1 :(得分:0)

要添加到PaulW11的答案,这里发生的事情只是枚举的有效语法,并且不适用于任何其他类型(类,结构,方法,函数)。 Swift知道类型您指定的属性是类型为SKSceneScaleMode的枚举,因此您可以引用枚举成员而无需显式给出枚举的类型(即SKSceneScaleMode.ResizeFill)。

在某些情况下会出现歧义,您必须提供全名,这将取决于上下文。例如,您可以在范围中使用两种不同的枚举类型,它们都具有匹配的成员名称。

修改

在我错误地指定此答案时更新此答案仅适用于枚举,但事实并非如此。这里有一篇很好的博客文章,更详细地解释了

http://ericasadun.com/2015/04/21/swift-occams-code-razor/