I’ve noticed that experienced Swift developers are more likely to use type annotations instead of initializers when working with numbers.
That means using
let width: Float = 4
let width = Float(4)
I thought it was a holdover from Obj-C where type annotations come first. However, today I dealt with a bug that makes it clear adding type annotations is superior.
let a: CGFloat = 3 / 10 // 0.3 let b = CGFloat(3 / 10) // 0.0
b, the division is done with two integers.
Int rounds down, so it gives you the
CGFloat version of 0. Probably not what’s intended.
On the other hand, for
a, the compiler smartly wraps both integers in
CGFloat, which gives you the result you’re actually looking for.