在Swift中,这种特定的语法是什么意思?

超龙

我一直在尝试遵循一些iOS Swift教程来连接到Parse.com

codementor.io教程

  loginViewController.fields = .UsernameAndPassword | .LogInButton | .PasswordForgotten | .SignUpButton | .Facebook | .Twitter

补习班教程

  loginViewController.fields = [.UsernameAndPassword, .LogInButton, .SignUpButton, .PasswordForgotten, .Facebook]

我假设前者是Switch 1.x,后者是Swift2。从上下文来看,它们似乎在做相同的事情,但是我还没有找到语法更改的语言参考。很难搜索点,管道和逗号...有人可以解释每个摘录中的语法吗?(我正在努力阅读语言规范,但实际上使应用程序正常工作会很有趣!)

抢马约夫

旧的Swift 1语法基于您在C和Objective-C中处理选项集的方式:将选项集存储为整数类型,然后使用按位运算符(|&~)进行操作。因此,.UsernameAndPassword | .LogInButton意味着一个同时包含.UsernameAndPassword.LogInButton选项的选项集在旧语法中,您nil用来表示一个空选项集(其中不包含任何选项),根据非空集的语法,这并不明显。

克里斯·拉特纳(Chris Lattner)在WWDC 2015会话106:Swift中的新增功能中描述了更改的语法首先,他描述了旧语法的问题:

问题是,当您使用最终使用的其他语法时,它会不太好用。您使用nil创建一个空选项集-这没有意义,因为选项集和可选选项是完全不同的概念,并且将它们组合在一起。您可以通过按位操作来提取它们,这是一个痛苦且极易出错的操作,并且很容易出错。

然后他描述了新方法:

但是Swift 2解决了这个问题。它使选项集像集合一样。这意味着选项集和选项集现在都带有方括号。这意味着您将获得带有空方括号的空集,并且将获得与选项集一起使用的全套标准集API。

新语法起作用的原因是因为OptionSetType符合ArrayLiteralConvertible协议(通过间接地符合SetAlgebraType)。该协议允许具有数组init元素的,使用数组文字初始化符合条件的对象

在新的Swift 2语法中,[ .UsernameAndPassword, .LogInButton ]表示包含.UsernameAndPassword.LogInButton选项的选项集请注意,它看起来就像通过它可以初始化一个普通的老的语法Setlet intSet: Set<Int> = [ 17, 45 ]新语法使您明显地将空选项设置为[]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

http请求中的这种语法是什么意思?

来自分类Dev

这种语法在Google Developer工具中是什么意思?

来自分类Dev

这个语法在Swift中是什么意思?

来自分类Dev

这个语法在Swift中是什么意思?

来自分类Dev

这个 Swift 语法是什么意思?

来自分类Dev

::在Ruby语法中是什么意思?

来自分类Dev

if语法中的','是什么意思?

来自分类Dev

Lombok中的语法@@()是什么意思?

来自分类Dev

if语法中的','是什么意思?

来自分类Dev

$ {$“ \ x47L” ... PHP中的这种语法是什么意思?

来自分类Dev

$ {$“ \ x47L” ... PHP中的这种语法是什么意思?

来自分类Dev

*[ ... ] 语法是什么意思?

来自分类Dev

在Swift中,“公开”是什么意思?

来自分类Dev

在Swift中,“ {_ in}”是什么意思?

来自分类Dev

Swift中的“ in”是什么意思?

来自分类Dev

在Swift中,“开启”是什么意思?

来自分类Dev

`<|` 在 Swift 中是什么意思

来自分类Dev

TLS文档中的这种表示法是什么意思?

来自分类Dev

ASP.NET 中“@”的这种用法是什么意思

来自分类Dev

这种数组是什么意思?

来自分类Dev

这种方法是什么意思?

来自分类常见问题

Perl中的<<'m'=〜m >>语法是什么意思?

来自分类常见问题

模板中的#foo =“ myFoo”语法是什么意思?

来自分类Dev

在语法内(在Perl 6中)是什么意思?

来自分类Dev

JL在at&t语法中是什么意思?

来自分类Dev

语法功能[T]在scala中是什么意思

来自分类Dev

Todomvc中的“![]” Elm代码语法是什么意思

来自分类Dev

朱莉娅(Julia)中的“&=”语法是什么意思?

来自分类Dev

在Terraform中,封装“#{variableName}”的语法是什么意思?

Related 相关文章

热门标签

归档