如何在Swift中扩展变量的范围
我正在用Xcode编写macOS命令行工具。变量“num1”不断返回nil。我在一开始就声明了它,所以它应该是一个全局变量。我如何解决这个问题如何在Swift中扩展变量的范围,swift,Swift,我正在用Xcode编写macOS命令行工具。变量“num1”不断返回nil。我在一开始就声明了它,所以它应该是一个全局变量。我如何解决这个问题 var num1: Int! if userChoice == "add" { print("Enter first number") if let num1 = readLine() { } } print ("\(num1)") 如前所述,您有两个num1变量。第二个范围仅限于第二个if语句的块 您还有一个问题,read
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")
}
如前所述,您有两个
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")
}
让num1
引入第二个变量,该变量与第一个变量无关,并且与if
局部变量无关。你应该给对方起另一个名字(一旦得到正确的输入,就分配给全局)。还应将全局变量设置为非可选。还要注意,第二个num1
变量将是可选的字符串,而不是Int
。如果允许num1
引入第二个变量,该变量与第一个变量无关,而与变量的局部变量(如果)。你应该给对方起另一个名字(一旦得到正确的输入,就分配给全局)。还要注意,第二个num1
变量将是可选的String
,而不是Int
。我对似曾相识有一种奇怪的感觉。)我对似曾相识有一种奇怪的感觉。)效果更好!现在唯一的问题是如何将“可选(11)”输出为11?请参阅我的更新。听起来你应该在读苹果公司的《Swift编程语言》一书。它涵盖了所有重要的东西,如可选变量和语言的其他部分。效果更好!现在唯一的问题是如何将“可选(11)”输出为11?请参阅我的更新。听起来你应该在读苹果公司的《Swift编程语言》一书。它涵盖了所有重要的事情,比如可选变量和语言的其他部分。