【问题标题】:Multiple switch statement with conditional inside内部有条件的多个 switch 语句
【发布时间】:2022-01-02 21:39:47
【问题描述】:

是否有更简洁的方法来编写案例“1”、“4”、“7”的条件?对于这种情况,我只想在字符串值不是“4”时才写入字符串“b”。

var b = ""
var c = ""

let s = "4"

switch s {
case "0", "6", "8":
    c += "|_|"
case "1", "4", "7":
    if s != "4" { b += "  |" }
    c += "  |"
case "2":
    c += "|_ "
case "3", "5", "9":
    c += " _|"
default:
    c += ""
}

【问题讨论】:

  • 我会将“4”放在自己的情况下以避免if,这至少会更清晰一些。并且也做default: break而不是更新c
  • 清洁剂可能用错词了。我知道在实践中以可读的方式编写内容会很好,但我希望它们更加压缩。

标签: swift switch-statement


【解决方案1】:

这是一个你可以使用fallthrough声明的地方:

switch s {
case "0", "6", "8":
    c += "|_|"
case "1", "7":
    b += "  |"
    fallthrough
case "4":
    c += "  |"
case "2":
    c += "|_ "
case "3", "5", "9":
    c += " _|"
default:
    break
}

既然您希望"1""7" 执行这两个语句,请给它们自己的案例,然后在其后面加上fallthough,这样它就可以落入下一个案例。那么"1""4""7"都会执行case "4":情况下的代码。

【讨论】:

  • 使用 fallthrough 似乎是最好的解决方案。 (已投票)
【解决方案2】:

我认为 switch 语句的整个想法是你不要在里面使用 ifs。您可能应该只为“4”创建一个单独的案例。通过设置这个条件所节省的空间量不值得混淆代码 IMO。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 2018-09-10
    • 1970-01-01
    • 2020-12-05
    • 2011-12-09
    • 2014-03-15
    相关资源
    最近更新 更多