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



我开始自学swift,现在我正在学习游戏示例。我遇到了一行代码,我认为这是一个特殊的

scene.scaleMode = .ResizeFill

在我习惯的语言(C/Java)中,"."符号用于引用某种结构/对象,但我不太确定这行代码的作用,因为在"."之前没有明确指定的对象

关于澄清这个未指定的"."参考,或何时/如何使用它的信息,将是一个很好的

附言:我在Xcode 中使用精灵套件

在Swift中,与您提到的其他语言一样,'.'是成员访问运算符。您所指的语法是Swift允许的一种简写,因为它是一种类型安全的语言。

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

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

在某些情况下会有歧义,你必须给出全名,这将取决于上下文。例如,作用域中可能有两种不同的枚举类型,它们都具有匹配的成员名称。

编辑

更新此答案是因为我错误地指定了这只适用于枚举,这是不正确的。这里有一篇很好的博客文章,更详细地解释了

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

最新更新