打印一个 nil object compiler said "unresolved identifier" 后面发生了什么?
Print a nil object compiler said "unresolved identifier" What happened behind?
我尝试了以下代码,但出现错误。
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 ....." 那为什么是 "unresolved"?嗯……"unresolved"那到底是什么?
我想打印一个 nil 是不对的,但为什么会错呢?我不知道。有人可以解释一下吗?顺便说一句,actualNumber 中真的有一个 nil 吗?如果可以,我怎样才能"see"呢?
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
你不能在外面访问actualNumber
和 Int("dd") 它将 return 为 nil 或可选值。
如果范围:
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)
您在 if 语句中有条件地声明了一个变量,并希望在 if 语句之外使用它。这行不通。首先,您使用条件链接,其中只有 actualNumber 会被初始化,而 possibleNumber 不是 nil。如果 possibleNumber 为 nil,则 actualNumber 将不存在。
其次,在 if 语句中声明的常量(或变量)仅在该 if 语句中具有作用域。这意味着当您尝试访问该常量时,您正在使用最后一个 if 语句,编译器会告诉您该常量不存在,"undeclared variable".
Apple 在 this site 上解释了可选链接。
我尝试了以下代码,但出现错误。
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 ....." 那为什么是 "unresolved"?嗯……"unresolved"那到底是什么?
我想打印一个 nil 是不对的,但为什么会错呢?我不知道。有人可以解释一下吗?顺便说一句,actualNumber 中真的有一个 nil 吗?如果可以,我怎样才能"see"呢?
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
你不能在外面访问actualNumber和 Int("dd") 它将 return 为 nil 或可选值。
如果范围:
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)
您在 if 语句中有条件地声明了一个变量,并希望在 if 语句之外使用它。这行不通。首先,您使用条件链接,其中只有 actualNumber 会被初始化,而 possibleNumber 不是 nil。如果 possibleNumber 为 nil,则 actualNumber 将不存在。
其次,在 if 语句中声明的常量(或变量)仅在该 if 语句中具有作用域。这意味着当您尝试访问该常量时,您正在使用最后一个 if 语句,编译器会告诉您该常量不存在,"undeclared variable".
Apple 在 this site 上解释了可选链接。