var a: String = "1"
var b: Int = Int(a)
上面的示例触发了一个错误,指出需要展开
Int
。var a: String = "1"
var b = Int(a)
但是,如果在声明b时关闭类型并执行相同的操作,则不会触发任何错误。
这两种方法有什么区别?为什么第一个需要展开,即使它没有声明为可选?
最佳答案
这是因为在第一个示例中,您说b
是Int
类型,在第二个示例中,因为您没有使类型显式编译器将其设置为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/