gpt4 book ai didi

swift - 当没有真正的 "else"案例涵盖所有内容时,我如何根据特定条件最好地处理返回特定对象?

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

我想在特定方法中创建并返回一个对象。我在方法中传递了一个整数,我知道它将是 0、1 或 2。

所以从根本上说,我会像这样构造它:

if num == 0 {
return 12
} else if num == 1 {
return 24
} else if num == 2 {
return 36
}

我知道可以涵盖所有情况。

但是编译器会提示这没有涵盖所有特定情况,我会得到一个错误。我需要某种 else 语句。

但是我应该把什么作为 else 语句呢?我想不出任何有意义的有效内容。我可以将最后一个条件更改为 else,但它实际上指的是 2 之后并不清楚。它似乎不可维护。

我该怎么办?

最佳答案

只需从最后一条语句中删除 if 并仅保留 else:

if num == 0 {
return 12
} else if num == 1 {
return 24
} else {
return 36
}

但我宁愿使用 switch 语句:

switch(num) {
case 0: return 12
case 1: return 24
case 2: fallthrough
default: return 36
}

这里 2 情况由 default 情况处理,使用 fallthrough 关键字

考虑到可能的值是连续的并且从 0 开始,实现相同目标的另一种方法是使用数组:

let values = [12, 24, 36]
return values[num]

如果函数是类/结构方法,values 数组可以定义为函数外部的静态(类)属性,只是为了避免在每次函数调用时实例化它。请注意,如果 num 值不在 [0, 2] 范围内,此解决方案将生成运行时异常

关于swift - 当没有真正的 "else"案例涵盖所有内容时,我如何根据特定条件最好地处理返回特定对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26204683/

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