【问题标题】:Multiple equations in one boolean statement一个布尔语句中的多个方程
【发布时间】:2013-06-03 00:16:41
【问题描述】:

我认为这是一个非常普遍的编程问题,因为布尔语法在许多常用语言中或多或少是相同的。

但我的问题仍然主要针对 php 和 javascript。

假设我想编写一个 if 语句,如果变量等于 2,3 或 5,则返回 true。 而且这个变量的名字很长,所以像这样:

if((An_Object_With_A_Long_Name.Has_Also_An_Array[With_An_Index_Too]==2) 
   || (An_Object_With_A_Long_Name.Has_Also_An_Array[With_An_Index_Too]==3) 
   ||(An_Object_With_A_Long_Name.Has_Also_An_Array[With_An_Index_Too]==5))
{
  return true;
}

我真的希望我的代码看起来更短,几个月后阅读它不会那么令人沮丧:)

所以我可以把它简化成类似的东西

if(An_Object_With_A_Long_Name.Has_Also_An_Array[With_An_Index_Too]==2||3||5)

感谢您的帮助!

【问题讨论】:

  • 创建一个包含有效值的集合(列表、数组等),然后执行if validValues.Contains(An_Object_With_A_Long_Name.Has_Also_An_Array[With_An_Index_Too])) { return true; } 之类的操作
  • 谢谢,但我要求这样做的原因是我试图避免额外的内存分配,所以如果有一种无需额外变量的方法,我将不胜感激。
  • 额外的内存分配?有多少个有效值?几亿的集合可能会消耗 1 GB 的内存。
  • 你需要首先担心干净的代码。如果遇到内存问题,请调试和测试以确定需要改进的地方。

标签: oop boolean boolean-expression


【解决方案1】:

骗子出路:对于那个 if 语句,将 An_Object_With_A_Long_Name 分配给对象 i。 (如果您打算多次比较这个变量,请将 An_Object_With_A_Long_Name 的指针分配给 Object i。

【讨论】:

  • 谢谢,但我真的很想学习(如果有的话)简化布尔语句的方法。所以没有骗子!! :)
  • mbeckish 的解决方案似乎更合适,骗子更少:)
猜你喜欢
  • 2022-01-26
  • 1970-01-01
  • 2019-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-19
  • 2013-04-01
  • 2022-11-11
相关资源
最近更新 更多