我无法弄清楚为什么这个'可选'在方案1中不起作用,但没有可选的?它适用于方案2。
使用Swift v 1.2,xCode 6.2
var stuff = "6t"
// SCENARIO 1
// Why is this failing when stuff contains non-digit characters?
// i.e. it works if stuff = "45".
if let value: Int? = stuff.toInt() {
println("value \(value!)")
}
// SCENARIO 2
// This works!
if let value = stuff.toInt() {
println("val3 \(value)")
}
参考也参见这些SO答案: *我想知道这里的Sift 1.2示例/答案是否完全错误? Swift - Converting String to Int
答案 0 :(得分:1)
没有必要使用if let value: Int?
。如果if let
有效,那么该值为Int
。它不可能是零。因此,您无需将其声明为可选项。
答案 1 :(得分:1)
事实上两种情况都是:
toInt()
返回有效的Int
nil
if let
将成功(是的,第一个IF无用)。
特别是在您的代码toInt()
中,在两种情况下都会返回nil
。
但是在您的第一个场景中,您只是接受nil
作为输入THEN块的有效值。