在最近的一个问题中,发帖者有这样一行有趣的代码:
self.view.backgroundColor = .whiteColor()
看到这一点我很惊讶。我只见过前导点用于枚举值的符号。在这种情况下,backgroundColor
属于类型UIColor?
and whiteColor
是一个类方法UIColor
返回一个UIColor
.
为什么这有效?这是调用工厂方法的合法方式吗?
This feature叫做 ”隐式成员表达式 https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID394"
隐式成员表达式是访问类型成员的缩写方式,例如枚举情况或类方法,在类型推断可以确定隐含类型的上下文中。它具有以下形式:
.
member name
但是,从现在开始,我建议你不应该使用此功能Optional
or ImplicitlyUnwrappedOptional
语境。
虽然这有效:
// store in Optional variable
let col: UIColor?
col = .redColor()
// pass to function
func f(arg:UIColor?) { println(arg) }
f(.redColor())
这会使编译器崩溃:(
func f(arg:UIColor?, arg2:Int) { println(arg) }
// ^^^^^^^^^^ just added this.
f(.redColor(), 1)
编译器有一些错误。看:swift 不允许函数参数初始化吗? https://stackoverflow.com/q/26921177/3804019
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)