-2

我尝试了以下代码,但出现错误。

var possibleNumber = "Hello World!"

if let actualNumber: Int = Int(possibleNumber) {
    print("\"\(possibleNumber)\" has an integer value of \(actualNumber)")
} else {
    print("\"\(possibleNumber)\" could not be converted to an integer")
}

print(actualNumber) // **Here comes the compile time error**

错误:

use of unresolved identifier 'actualNumber'

对象actualNumber背后发生了什么?我在可选绑定的第一部分声明了它:“if let actualNumber: Int .....”那为什么它“未解决”?嗯...“未解决”到底是什么?

我想打印一个 nil 是错误的,但为什么它是错误的?我不知道。有人可以解释一下吗?顺便说一句,actualNumber 里面真的是零吗?如果是这样,我怎样才能“看到”它?

4

3 回答 3

1

如果范围:

if let actualNumber = Int(possibleNumber) {
    // Here the 'actualNumber' can be accessed because is in scope
} else {
    // Here the 'actualNumber' cannot be accessed because is not in scope 
}

保护范围

guard let actualNumber = Int(possibleNumber) else {
    // actualNumber cannot be accessed
    // print(actualNumber)
    return
}

// actualNumber can be accessed
print(actualNumber)

但是如果你想要可选值,你可以做这样的事情

let possibleNumber = "Hello World!"
// actualNumber will be optional (and in this case will be 'nil')
let actualNumber = Int(possibleNumber)

print(actualNumber)
于 2016-04-28T10:42:30.747 回答
1
you should do something like this :

if let actualNumber = Int(possibleNumber) {
// do something with your number
print("\"\(possibleNumber)\" has an integer value of \(actualNumber)")
} else {
print("\"\(possibleNumber)\" could not be converted to an integer")
}

// 你不能访问外部的实际数字 if

和 Int("dd") 它将返回 nil 或可选值。

于 2016-04-28T10:28:01.780 回答
1

您有条件地在 if 语句中声明一个变量,并希望在 if 语句之外使用它。这行不通。首先,您使用条件链接,其中您的 actualNumber 将被初始化,而 possibleNumber 不为零。如果 possibleNumber 为 nil,actualNumber 将不存在。

其次,在 if 语句中声明的常量(或变量)仅在该 if 语句中具有作用域。这意味着当您尝试访问该常量时,您正在使用最后一个 if 语句执行此操作,编译器会告诉您该常量不存在,“未声明的变量”。

苹果在这个网站上解释了可选链接。

于 2016-04-28T10:44:02.870 回答