Swift中的属性类型转换:良好实践

时间:2016-04-05 20:18:49

标签: ios swift

最近我一直在想,以下两种在Swift中对一个属性进行类型转换的方式是否存在差异?我知道正在制作的属性没有区别,但我想知道编译器的性能或只是好的做法。

inner join commission
on sale.sale_id=commission.sale_id

VS

let x: CGFloat = 5 

谢谢!

2 个答案:

答案 0 :(得分:3)

as运算符用于类型转换。因此,对于第二种情况,您说y等于整数5,将其转换为CGFloat。鉴于这两个选择,第一个选择更加明确和首选。

第一个选择不是你所暗示的问题中的类型转换。 CGFloat有一个init函数需要Int。因此,从编译器的角度来看,它也是首选。

答案 1 :(得分:0)

这(几乎)完全是一个风格问题。

我认为(由@Kenneth提供),

let w = CGFloat(5)

更加敏捷" (目前,c。2016年4月),但随着斯威夫特变得更加成熟,风格显然会继续变化,

这是您想要内联示例的格式,例如

CGPathAddArc(path, nil, p1.x, p1.y, slice.radius, 0, CGFloat(M_PI_4), true)

我还会提供,如果你不是特别想要/需要CGFloat但实际上只是一个浮点数,建议的初始化将是

let z = 5.0

这将暗示Double为类型,

并重申as旨在作为运行时类型检查和转换,可能导致nil值(即,编译器可以安全地执行/简化的任何内容,它将会)< / p>

let y = 5 as CGFloat

这可能会引起一些读者的困惑,因为通常的意图是运行时转换。