我在我的项目中发现了一个有趣的代码,我在想它甚至是如何工作的。如果我把它简化,在操场它看起来像这样:Swift使用“as”操作符将Bool转换为NSNumber
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' –
明白了你的观点.. –