我在我的项目中发现了一段有趣的代码,我想知道它是如何工作的。如果我简化它,在 playground 中看起来像这样:
var b: Bool = true
var n: NSNumber = b as NSNumber
我不理解为什么as
运算符将Bool
转换为NSNumber
。 as
的文档给出了唯一的使用示例,即用于检查[Any]
数组中元素的类型。这是来自文档的一个示例,也是我期望使用as
的方式:
var things = [Any]()
for thing in things {
switch thing {
case 0 as Int:
case 0 as Double:
我没想到as会做真正的转换。我可以在哪里阅读更多相关信息? 当我尝试使用Int代替NSNumber运行类似代码时,它无法编译:
var b: Bool = true
var n: Int = b as Int --> doesn't compile
所以NSNumber
似乎是一个特殊情况?我感到困惑。有没有人可以解释一下?
String(123)
,但你不能将一个整数强制类型转换为字符串:123 as String
。 - Martin R