在Swift中,这个特定的语法是什么意思?
我一直在尝试按照一些iOS
Swift教程连接到Parse.com
codementor.io tutorial: loginViewController.fields = .UsernameAndPassword | .LogInButton | .PasswordForgotten | .SignUpButton | .Facebook | .Twitter makeschool tutorial loginViewController.fields = [.UsernameAndPassword,.LogInButton,.SignUpButton,.PasswordForgotten,.Facebook] 我假设前者是Switch 1.x,而thelatter是Swift 2.从上下文看,它们看起来是做同样的事情,但我还没有找到语法变化的语言参考.非常难以搜索点,管道和逗号……有人可以解释每个片段中的语法吗? (我正在阅读语言规范,但实际上让应用程序工作会很有趣!)
旧的Swift 1语法基于处理C和Objective-C中的选项集的方式:您将选项集存储在整数类型中,并使用按位运算符(|和&和?)来操作它们.那么.UsernameAndPassword | .LogInButton表示一个选项集,其中包含.UsernameAndPassword和.LogInButton选项.在旧语法中,使用nil表示空选项集(其中不包括任何选项),这对于非空集的语法而言并不明显.
Chris Lattner在WWDC 2015 Session 106: What’s New in Swift中描述了更改的语法.首先,他描述了旧语法的问题:
然后他描述了新的方法:
新语法工作的原因是因为OptionSetType符合ArrayLiteralConvertible协议(间接地,符合SetAlgebraType).此协议允许使用数组文字初始化符合对象,方法是使用带有元素列表的init. 在新的Swift 2语法中,[.UsernameAndPassword,.LogInButton]表示包含.UsernameAndPassword和.LogInButton选项的选项集.请注意,它看起来就像您可以初始化普通旧Set的语法:let intSet:Set< Int> = [17,15].新语法显然指定了一个设置为[]的空选项. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |