var tuples: String! = "subash"
if let goin = tuples {
print(goin!)
}
我收到此错误:
无法强制解开非可选类型String的值
我不知道发生的常量异常与元组相同,但是为什么当我强制展开时却向我显示错误
代替上面的代码,它运行良好:
var tuples: String! = "subash"
print(tuples!)
但是,请您为上述问题提供解决方案
答案 0 :(得分:0)
如果您知道可选方法的工作原理,那是正常的。
在if语句中,正确的表达式必须是Optional或隐式展开的Optional,但不是“ normal”值。
这是正确的代码:
let tuples: String! = "subash"
if let goin = tuples {
print(goin) // NO NEED to unwrap, because going IS NOT Optional
}
此代码运行良好的原因:
var tuples: String! = "subash"
print(tuples!)
print(tuples)
...是因为元组的类型为隐式解包可选。
但是,在一般情况下是这样的:
let myVar: String! = "some string"
if let myNewVar = myVar {
// Some code...
}
... myVar
始终是隐式展开的可选,而myNewVar
则为字符串类型,这是因为可选展开与if let
语句一起工作。
最后,如果我们这样解开值:
let myVar: String! = "some string"
if let myVar = myVar {
// Some code...
print(myVar)
}
打印出的值为temp myVar
,其类型为String
,并且遮盖了我们最初声明的隐式展开myVar
变量。