2016-11-11 69 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