【发布时间】:2011-06-08 15:57:56
【问题描述】:
我想知道:有没有办法让 Objective-C 支持多变量 switch 构造?
我的意思是,我经常不得不处理解决方案取决于一对变量而不是单个变量的问题。对于单个变量值的长列表,可以使用简单的switch/case 构造:
switch (var) {
case 0: ...
case 1: ...
default: ...
}
但是当你必须处理两个值的组合时,你经常会碰巧做这样的事情:
switch (var1) {
case 0:
switch (var2) {
case 0: ...
case 1: ...
}
case 1:
switch (var2) {
case 0: ...
case 1: ...
}
...
}
而且它变得越来越复杂......我真正想做的是这样的事情:
switch (var1, var2) {
case (0,0) : ...
case (1,0) : ...
case (*,1) : ...
default: ...
}
这将导致更简单和可读的结构。是否有任何解决方案来支持这种结构?还是这个略有不同?
【问题讨论】:
-
+1 我很想知道哪些语言支持这种功能。
-
这些:stackoverflow.com/questions/5436983/…。但我想这与 Objective-C 无关。
-
简短回答是否定的。充其量你可以创建一个哈希生成器来打开,但是 obj-c 没有仿函数,你仍然需要在你的 vars 上调用一些东西来使用 switch。除非您使用预处理器宏,否则这似乎不值得付出努力。也许使用函子的 obj-c++ 模板解决方案会起作用,但它会很尴尬并且不会节省太多时间。在第一个 var 的 switch 中调用方法有什么问题吗? =)
-
这个东西需要高度优化吗?
else if语句的列表是否足够?您是否对两者都进行了编码并比较了两者? -
我真的不需要高度优化的东西。只是一些易于编写且更易于维护的东西。
else if的列表不是最好的解决方案,恕我直言。但这应该是一个更通用的问题。我想要一个最适合所有人的解决方案。
标签: objective-c switch-statement