-1
while true {
print ( """
1. Log in
2. Create new user
3. Quit
""")
if let numberString = readLine(), let number = Int(numberString) {
    print("you entered \(number)")
    break
} else {
    print("Try again")
}
}

以后有必要用数字变量来比较一下。怎么可能看不见?

当我尝试制作一个全局变量时,出现了问题:

var numberString: String?
var number: Int?

while true {
print ( """
1. Log in
2. Create new user
3. Quit
""")
if numberString = readLine(), number = Int(numberString) {
    print("you entered \(number)")
    break
} else {
    print("Try again")
}
}

在此处输入图像描述

4

2 回答 2

1

考虑到您正在创建命令提示符并且该选择在循环之外没有任何意义,因此无需将其设为全局。您只需要切换用户选择并决定从那里做什么。请注意,如果您尝试从开关内部中断,则不会像我在上一个问题中向您展示的那样退出循环。为了让编译器知道您想要中断 while 循环而不是 switch,您需要标记您的 while 循环语句,这样您可以指定当循环中有 switch 时要中断的内容。试试这样:

func getValue() -> Int? {
    guard let line = readLine(), let value = Int(line) else {
        return nil
    }
    return value
}

question: while true {
    print("""
          1. Log in
          2. Create new user
          3. Quit
          """)
    guard let value = getValue() else {
        continue
    }
    switch value {
    case 1:
        print("you have selected number one")
    case 2:
        print("you have selected number two")
    case 3:
        print("Good bye")
        break question
    default:
        print("Try again")
    }
}
于 2022-01-25T13:11:56.527 回答
0

这里没有太多信息可以提供,但我想我可以提供帮助。在第一个脚本中,您将创建一个新变量并设置该变量的值:

if let numberString = readLine(), let number = Int(numberString) { ... }

在您的第二个脚本中,您必须使用全局变量,但您从未为它们提供值。您需要做的是在比较它们之前为全局变量 (numberString和) 提供一个值。number因此,您需要使用 == 符号来比较不同的变量/类型。例如:

var numberString: String?
var number: Int?

while true {
    print("""
    1. Log in
    2. Create new user
    3. Quit
    """)
    numberString = readLine()
    number = Int(numberString!)
}

您现在可以比较和/或打印您的全局变量...

最终代码

var numberString: String?
var number: Int?

while true {
    print("""
    1. Log in
    2. Create new user
    3. Quit
    """)
    numberString = readLine()
    number = Int(numberString!)
    
    if number == 1 {
        print("you have selected number one")
    } else if number == 2 {
        print("you have selected number two")
    } else if number == 3 {
        print("you have selected number three")
    } else {
        print("Try again")
    }
}

由于这两个变量numberString现在number都是全局变量,因此如果您将来需要再次比较它们,您可以访问它们。

于 2022-01-25T10:50:08.137 回答