var myString = "7"
var possibleInt = Int(myString)
print(possibleInt)
上面的代码打印出来:
可选(7)
为什么即使我没有使用可选项也会这样做。字符串被转换为数字,所以不应该是:
7
myString = "banana"
possibleInt = Int(myString)
print(possibleInt)
此代码将打印出nil,因为类型转换不起作用,但我不知道7如何可选。
答案 0 :(得分:2)
当您将值(即String转换为Int)转换为可选时 - 如果您尝试运行:
let num = Int("things")
// num is Optional(nil)
这不可能是一个数字,所以它返回一个空的'可选的。
如果您知道该字符串将始终是有效数字,您可以不安全地打开它:
let num = Int("5")!
// num is 5, not Optional(5)
或者,如果您不知道该字符串是否为有效的int,您可以安全地打开它:
if let num = Int(myString) {
// Do something with the number
} else {
// Catch some error
}
答案 1 :(得分:1)
关于可选项的美妙之处在于它们在您的代码中创建了一个安全网。如果您使用另一种语言并尝试将“example123”解析为Int,它将崩溃并且程序将终止。但是在Swift中,大多数可能导致崩溃的函数返回一个可选项,以便程序继续运行。
有两种方法可以避免在程序结束时获得可选值。
如果您完全确定Int()中的输入是整数,则可以使用
var possibleInt = Int(myString)!
当然,如果myString不是整数,您的应用程序将崩溃。但是,你可以通过
安全地解开它if let possibleInt = Int(myString) {
// use possibleInt as an int and not an optional
}
// otherwise, the program won't do anything with possibleInt
希望这有帮助。
答案 2 :(得分:0)
Int()方法返回一个可选值,因为如果你的字符串包含的东西不是数字,例如“abc123”,则Int(“abc123”)将返回nil, 并且,返回可选值的方法与方法的参数没有任何关系。
答案 3 :(得分:0)
您可以看到您没有对任何类型声明“ myString”,首先声明为字符串/整数,然后尝试打印该变量。您将获得所需的确切结果。
var myString =“ 7”
variableInt:Int;
variableInt = Int(myString)
print(possibleInt)