var a: String = "1"
var b: Int = Int(a)

上面的示例触发了一个错误,指出需要展开Int
var a: String = "1"
var b = Int(a)

但是,如果在声明b时关闭类型并执行相同的操作,则不会触发任何错误。
这两种方法有什么区别?为什么第一个需要展开,即使它没有声明为可选?

最佳答案

这是因为在第一个示例中,您说bInt类型,在第二个示例中,因为您没有使类型显式编译器将其设置为Int?
这是因为Int(string)只在字符串可以解释为Int时才起作用,所以Int("3")->3但是如果您说Int("text")->nil,它应该怎么做,因为它不能将字符串解析为Int
如果在第一个示例中需要,可以提供默认值,然后就可以了。
var b: Int = Int(a) ?? 0

关于swift - 类型转换需要解包吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52145207/

10-12 00:15
查看更多