如何在Swift中扩展变量的范围

如何在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

我正在用Xcode编写macOS命令行工具。变量“num1”不断返回nil。我在一开始就声明了它,所以它应该是一个全局变量。我如何解决这个问题

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称为别的
  • 把东西放在if里

  • 让num1
    引入第二个变量,该变量与第一个变量无关,并且与
    if
    局部变量无关。你应该给对方起另一个名字(一旦得到正确的输入,就分配给全局)。还应将全局变量设置为非可选。还要注意,第二个
    num1
    变量将是可选的
    字符串,而不是
    Int
    。如果
    允许num1
    引入第二个变量,该变量与第一个变量无关,而与
    变量的局部变量(如果
    )。你应该给对方起另一个名字(一旦得到正确的输入,就分配给全局)。还要注意,第二个
    num1
    变量将是可选的
    String
    ,而不是
    Int
    。我对似曾相识有一种奇怪的感觉。)我对似曾相识有一种奇怪的感觉。)效果更好!现在唯一的问题是如何将“可选(11)”输出为11?请参阅我的更新。听起来你应该在读苹果公司的《Swift编程语言》一书。它涵盖了所有重要的东西,如可选变量和语言的其他部分。效果更好!现在唯一的问题是如何将“可选(11)”输出为11?请参阅我的更新。听起来你应该在读苹果公司的《Swift编程语言》一书。它涵盖了所有重要的事情,比如可选变量和语言的其他部分。