swift - 为什么字面值比初始值设定项产生更高效的代码?

标签 swift performance casting initialization

我正在阅读 book在 Swift 上,它说:

在可能的情况下,更喜欢强制转换或强类型化文字而不是使用初始化程序。初始化器添加了一个额外的函数调用;强制转换在编译时处理。使用文字会产生更高效的代码:

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

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

第二个选项首先初始化 0 然后做一个额外的转换操作。

第三个选项只做初始化,这一切都很好。

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

编辑:

既然 Int 有优先级,这个场景是否也有相同的答案?

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

最佳答案

as UInt8 不执行任何“额外的转换操作”。

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

关于swift - 为什么字面值比初始值设定项产生更高效的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42705484/

相关文章:

swift - 问 : How to add multiple objects AR dectection

swift - 使字体大小适合封闭按钮?

sql - SQL Server 中的 BIT 字段比 int 字段快吗?

javascript - 通过 framerate/requestAnimationFrame 确定元素是否在屏幕上

c# - 为什么更新结构数组比更新类数组更快?

c++ - 显式转换 XmlRpcValue 以加倍

c++ - 在 C : Will alignment break my neck? 中伪造继承

ios - SDWebImage 不会在真实设备上显示本地存储的图像,但会显示在模拟器中

c++ - 来自 C String 的 Swift String 的长度正确但内容不正确

Java:检测返回对象的类型