math - 在 switch case 语句中检测 2 个变量值的 4 个排列

标签 math coding-style geometry

我有 2 个变量,widthheight作为整数。其中任何一个都可以是正数或负数(不是零)。所以自然有4种情况;

  1. width > 0 && height > 0
  2. width > 0 && height < 0
  3. width < 0 && height > 0
  4. width < 0 && height < 0

现在我想在不使用 4 个 if 语句的情况下对这 4 个案例中的每一个采取不同的操作。

有没有办法聚合这些案例,以便可以将其作为简单的 switch case

switch( aggregate ){
  case 1:
  case 2:
  case 3:
  case 4:
}

如果没有比使用 if 更好的方法对于每个然后在 3D 空间中,您有 3 个长度 (x,y,z)将有 27 个 if block 。

如果这很重要,我正在使用 javascript

最佳答案

javascript 中这很简单,只需将条件倒置即可:

switch(true)
{
    case (width > 0 && height > 0):
        break;
    case (width > 0 && height < 0):
        break;
    case (width < 0 && height > 0):
        break;
    case (width < 0 && height < 0):
        break;

    default:

}

这也适用于 VB6/VBA,但不适用于 C++ 和 C# 等许多其他语言。

这是一个简单的证明:http://jsfiddle.net/avuxj/

关于math - 在 switch case 语句中检测 2 个变量值的 4 个排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7360600/

相关文章:

math - 从任何 2D 多边形生成 3D 棱镜

python - 在长 if-elseif-else 语句中使用 return (Python)

ios - 彼此相切的圆。我如何检测哪个圆被点击了?

c# - 从线生成多边形

c++ - 扫描算法的排序边

math - float 学运算是否被破坏?

opencv - 反转实值索引网格

c++ - astyle 没有缩进以 .或 ->

php - 如何解决这个数字加倍和减半的问题?

c# - 单击超链接字段时获取 gridview 的索引