为什么swift认为它的可选let输入= int(a)

时间:2016-12-16 21:03:13

标签: swift

我在最后一行总和swift给出错误之后遵循了简单的代码 和var sum = input * 2应更改为var sum = input!* 2

我不确定为什么因为我没有声明变量a是可选的。 swift是否可以选择输入?感谢

Var a="2"
let input = int(a)
var sum=input*2 

3 个答案:

答案 0 :(得分:3)

将字符串转换为int返回和Optional,因为它可能会失败。

例如,let result = Int("foo")将返回nil,因为" foo"不是有效的Int。

答案 1 :(得分:2)

如果你做了什么

Var a = "This is most defiantly not a number and even if it were its too long to fit within an int 123457993849038409238490ff9f-09-0f9-09f dd0d0066646464646464349023849038490328 I'm a teapot". 
let input = int(a)

你认为可以转换为int吗?现在你明白为什么它是可选的吗?

答案 2 :(得分:1)

如果String无法转换为Int,会发生什么?如Int(“A”)。它成为一个可选项,因为编译器无法确定您传入的String是否可以成为Int。

 guard let intVal = Int(a) else { return }

 if let intVal = Int(a) {
 //you have a valid Int here
 }

是处理这种情况的方法