gpt4 book ai didi

ios - 带整数的 switch 语句

转载 作者:搜寻专家 更新时间:2023-11-01 05:55:18 25 4
gpt4 key购买 nike

我试图同时使用两个变量来获得一个简单的 switch 语句,但是我不断收到大量错误,而且我真的不知道如何正确地语法化它。我只想知道一个是否为零,另一个是否为零。我的代码如下:

    var ptsRemaining: Int?
var ptsUsed: Int = 0

func updatedButtons() {
switch (ptsRemaining, ptsUsed) {
case (0), (0):
print("do thing 1")
case (0), (!0):
print("do thing 2")
case (!0), (0):
print("do thing 3")
case (!0), (!0):
print("do thing 4")
default:
print("error!")
}
}

注意我也试过这个:

func updatedButtons() {
switch (ptsRemaining, ptsUsed) {
case (0,0):
print("hello")
case (0,!0):
print("hello")
case (!0,0):
print("hello")
case (!0,!0):
print("hello")
default:
print("Error")
}
}

在这两种情况下,我收到的错误如下:

Cannot convert value of type 'Int' to expected argument type 'Bool'
Expression pattern of type 'Int' cannot match values of type 'Int?'

最佳答案

你不能通过 !0 说“非 0”。这不是 if 语句。这就是模式匹配。

要匹配“任何东西”的模式,您需要使用 _ 也就是通配符模式。

switch (ptsRemaining, ptsUsed) {
case (0?, 0):
print("do thing 1")
case (0?, _):
print("do thing 2")
case (_, 0):
print("do thing 3")
default: // you don't need the case of "both not 0"
print("do thing 4")
}

但是你喊道,“我不想匹配'anything'!我要匹配'not 0'!”。

嗯,switch cases是按顺序匹配的。如果第一种情况不匹配,那么一个或多个变量一定不能为 0!然后我们看看第一个是否为 0,此时我们不关心第二个变量,因为我们知道如果第一个为 0,它一定不为 0。第三种情况也是如此。

注意,如果你想把nil当作0,你可以这样做:

switch (ptsRemaining ?? 0, ptsUsed)

然后删除 case 中的 ?

关于ios - 带整数的 switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48475210/

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