我正在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