Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么swift认为它是可选的let input=int(a)_Swift - Fatal编程技术网

为什么swift认为它是可选的let input=int(a)

为什么swift认为它是可选的let input=int(a),swift,Swift,在最后一行sum swift给出错误后,我有下面的简单代码 和var sum=input*2应更改为var sum=input*二, 我不知道为什么,因为我没有声明变量a是可选的。 swift是否将输入作为可选输入?谢谢 Var a="2" let input = int(a) var sum=input*2 将字符串强制转换为int将返回可选值,因为它可能会失败 例如,let result=Int(“foo”)将返回nil,因为“foo”不是有效的Int。如果您这样做了该怎么办 Var a

在最后一行sum swift给出错误后,我有下面的简单代码 和var sum=input*2应更改为var sum=input*二,

我不知道为什么,因为我没有声明变量a是可选的。 swift是否将输入作为可选输入?谢谢

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

将字符串强制转换为int将返回可选值,因为它可能会失败

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

如果您这样做了该怎么办

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怎么办?例如Int(“A”)。它成为可选的,因为编译器无法确定您要传递的字符串是否可以成为Int

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


是处理这种情况的方法

谢谢大家的回答。
 if let intVal = Int(a) {
 //you have a valid Int here
 }