var a: String = "1"
var b: Int = Int(a)
上面的示例触发一个错误,提示Int
需要解包。
var a: String = "1"
var b = Int(a)
但是,如果我们在声明b时取消该类型并执行相同的操作,则不会触发任何错误。
两种方法有什么区别?为什么第一个即使没有声明为可选,也需要拆开?
答案 0 :(得分:3)
这是因为在第一个示例中您说b
的类型为Int
,而在第二个示例中,因为您没有使类型显式编译器将其设置为Int?
。
这是因为Int(string)
仅在字符串可以解释为Int
时才有效,所以Int("3")->3
但是如果说Int("text")->nil
怎么办,因为它不是能够将字符串解析为Int
如果在第一个示例中需要,您可以提供一个默认值,然后就可以了。
var b: Int = Int(a) ?? 0