SwiftUI中accentColor返回.white和.black的语法疑问
关于SwiftUI中
.white/.black语法的疑问解答 这不是SwiftUI独有的语法,核心是Swift的类型推断和静态成员引用特性在起作用,下面具体拆解:
类型推断帮你省略类型名
因为accentColor的返回类型已经明确标注为Color,Swift编译器能自动推断出你要引用的是Color类型下的成员,所以可以直接用.调用,无需写全Color.white。类似的,比如一个返回Int的函数里,你也可以直接写return .zero,编译器会自动识别为Int.zero。.white是Color预定义的静态实例Color.white和Color.black是苹果为Color类型提前封装好的静态属性,本质上就是已经初始化完成的Color实例,和你手动用Color(white: 1.0)创建的白色效果完全一致,只是苹果把常用颜色做成了现成的静态成员,方便开发者直接调用。不是SwiftUI专属特性
这种写法在Swift的其他框架里也能用到,比如UIKit中,如果一个函数返回类型是UIColor,你同样可以直接写return .white,编译器会自动推断为UIColor.white。
补充一点:如果上下文没有明确的类型约束,编译器无法推断你要引用的是哪个类型的.white,这时候就必须写全类型名,比如let color: Color = .white或者let color = Color.white,否则会报错。
内容的提问来源于stack exchange,提问作者Diego Perdomo
相关产品推荐
相关产品推荐

