最近我一直在想,以下两种在Swift中对一个属性进行类型转换的方式是否存在差异?我知道正在制作的属性没有区别,但我想知道编译器的性能或只是好的做法。
inner join commission
on sale.sale_id=commission.sale_id
VS
let x: CGFloat = 5
谢谢!
答案 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
这可能会引起一些读者的困惑,因为通常的意图是运行时转换。