怎么样! (向下铸造)在这种特殊情况下工作? - 斯威夫特

时间:2017-04-21 19:11:56

标签: swift casting

我正在玩耍!并作为?在Swift中,根据Apple文档:

  

强制形式, as!,尝试向下转换并强制 - 将结果作为单个复合动作展开。

这是我在操场上的代码:

let arr:[Any] = [1];

let a = arr.first;
print("a is \(a)");//a is Optional(1)

let x = a as! Int!;
print("x is \(x)");//x is Optional(1)

let y: Int! = a as! Int!;
print("y is \(y)");//y is Optional(1)

var z = 1 + y;// z = 2
var t = 1 + x;// Compile error

最后两行真的让我感到困惑,因为x和y应该具有(Int!)的类型(根据上面的Apple' doc)。但是这里只有y可以用在赋值子句中(在z中),但是x不能用于(在t中)。

有人可以解释一下吗?

如果这个问题在其他地方被问过,请原谅我。另外请不要介意我的分号(;),这只是一种习惯,所以我在Objc和Swift之间切换时不会搞砸:)。 编辑:删除":"不应该在那里。感谢Hamish

0 个答案:

没有答案