我正在玩耍!并作为?在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