我正在Xcode中编写macOS命令行工具。变量“num1”不断返回零。我在开始的时候宣布它应该是一个全局变量。我该如何解决这个问题?如何在Swift中扩展变量的范围
var num1: Int!
if userChoice == "add" {
print("Enter first number")
if let num1 = readLine() {
}
}
print ("\(num1)")
我正在Xcode中编写macOS命令行工具。变量“num1”不断返回零。我在开始的时候宣布它应该是一个全局变量。我该如何解决这个问题?如何在Swift中扩展变量的范围
var num1: Int!
if userChoice == "add" {
print("Enter first number")
if let num1 = readLine() {
}
}
print ("\(num1)")
如上所述,您有两个num1
变量。第二个范围仅限于第二个if
声明的块。
您还有一个问题,readLine
返回可选String
而不是Int
。
你可能想代码更是这样的:
var num1: Int?
if userChoice == "add" {
print("Enter first number")
if let line = readLine() {
num1 = Int(line)
}
}
print ("\(num1)")
当然你现在可能需要处理num1
是nil
。
一个选项是正确解开值:
if let num = num1 {
print("\(num)")
} else {
print("num1 was nil")
}
var num1: Int!
if userChoice == "add" {
print("Enter first number")
if let num2 = readLine() {
// This if-let runs if num2 is not nill.
print ("\(num2)")
num1 = Int(num2)
}
}
print ("\(num1)")
我对Déjàvu有着奇怪的感觉:) – rmaddy
即'让num1'引入第二可变无关的第一和本地到'if'。你应该给这个另一个名字(并且在你得到正确的输入后分配给全局)。也使全局非可选。 – Thilo
另请注意,第二个'num1'变量将是一个可选的'String',而不是'Int'。 – rmaddy