为什么文字产生比初始化器更高效的代码?

时间:2017-03-09 21:12:05

标签: swift performance casting initialization

我在Swift上阅读book,它说:

在可能的情况下,更喜欢使用初始化程序强制转换或强烈输入文字。初始化器添加额外的函数调用;演员表是在编译时处理的。使用文字可以产生更有效的代码:

let​ t: ​UInt8​ = 0 ​// yes​
 0 ​as​ ​UInt8​ ​// yes​
 ​UInt8​(0) ​// no​

对我来说,第一个选择是纯粹的和好的。

第二个选项首先初始化0 然后执行额外的投射操作。

第3个选项只进行初始化,这一切都很好。

所以我不明白为什么第二个选项不推荐第三个选项...

修改

由于Int具有优先权,这种情况也会有相同的答案吗?

  let​ t: ​Int​ = 0 ​
   0 ​as​ ​Int​ ​​
   ​Int​(0) ​

1 个答案:

答案 0 :(得分:2)

as​ ​UInt8​没有执行任何“额外投射操作”。

它只是一个关于如何解释整数文字的类型注释。