gpt4 book ai didi

匹配多个条件的Swift switch

转载 作者:行者123 更新时间:2023-11-28 12:11:34 25 4
gpt4 key购买 nike

由于 case: 阻止自动中断,Swift 提供了 fallthrough 关键字。这是有限的用途,因为它不会落入下一个条件测试,它会绕过下一个测试并只执行下一个测试的代码。是否可以让 switch 语句在多种情况下执行代码,同时执行条件?

作为 Swift 文档中的示例,如果我需要下面的代码来执行适用于给定点的每个 block 怎么办?

let somePoint = (0, 0)
switch somePoint {
case (0, 0):
print("\(somePoint) is at the origin")
case (_, 0):
print("\(somePoint) is on the x-axis")
case (0, _):
print("\(somePoint) is on the y-axis")
case (-2...2, -2...2):
print("\(somePoint) is inside the box")
default:
print("\(somePoint) is outside of the box")
}

正如所写,它只会打印第一个描述,即使实际上有多个描述。在每次测试后使用 fallthrough 会导致执行每个 case block 。

最佳答案

switch 语句将值与模式进行比较并执行基于第一次成功匹配的代码。

如果您打算匹配多个模式并执行所有匹配的代码然后使用多个 if 语句。可以使用相同的大小写模式:

if case (0, 0) = somePoint {
print("\(somePoint) is at the origin")
}
if case (_, 0) = somePoint {
print("\(somePoint) is on the x-axis")
}
// ...
if case (-2...2, -2...2) = somePoint {
print("\(somePoint) is inside the box")
}
// ...

关于匹配多个条件的Swift switch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48349632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com