2016-11-11 95 views
0

我正在Xcode中编写macOS命令行工具。变量“num1”不断返回零。我在开始的时候宣布它应该是一个全局变量。我该如何解决这个问题?如何在Swift中扩展变量的范围

var num1: Int! 

if userChoice == "add" { 
    print("Enter first number") 
    if let num1 = readLine() { 
    } 
} 

print ("\(num1)") 
+1

即'让num1'引入第二可变无关的第一和本地到'if'。你应该给这个另一个名字(并且在你得到正确的输入后分配给全局)。也使全局非可选。 – Thilo

+1

另请注意,第二个'num1'变量将是一个可选的'String',而不是'Int'。 – rmaddy

回答

2

如上所述,您有两个num1变量。第二个范围仅限于第二个if声明的块。

您还有一个问题,readLine返回可选String而不是Int

你可能想代码更是这样的:

var num1: Int? 

if userChoice == "add" { 
    print("Enter first number") 
    if let line = readLine() { 
     num1 = Int(line) 
    } 
} 

print ("\(num1)") 

当然你现在可能需要处理num1nil

一个选项是正确解开值:

if let num = num1 { 
    print("\(num)") 
} else { 
    print("num1 was nil") 
} 
+0

效果更好!现在唯一的事情是如何输出“可选(11)”为11? – John

+0

查看我的更新。听起来你应该阅读Apple的“The Swift Programming Language”一书。它涵盖了所有重要的东西,如可选变量和其他语言。 – rmaddy

0
  1. 呼叫第二NUM1别的东西。
  2. 把东西放在if中。
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)") 
+0

我对Déjàvu有着奇怪的感觉:) – rmaddy