【问题标题】:Any alternative's to multiline if statements?多行 if 语句的任何替代方法?
【发布时间】:2011-07-15 06:04:26
【问题描述】:

是否有任何替代模式可以将多行 if 语句减少为更易读或更美观的东西?比如:

if ($x == $y
  && $x == $z
  && $y == $v
  && $m == $t
  && $f == $x
  && $h == $g
  && $q == $w
  && $w == $p // etc
)

【问题讨论】:

  • 如果您发现自己比较了这么多条件,则可能需要重构......
  • 我对生成两组变量的代码没有写权限,我只需要检查一组是否与另一组重复。
  • 我认为这种说法是通用的,容易理解的。任何“聪明”的做法都可能会牺牲这些特征。
  • @chuster:你告诉我除了单独检查每个属性之外,你不知道有什么更简单的方法来比较两个对象是否相同?此外,这听起来像是创建object comparison 方法的绝佳机会。
  • @kjy112:谢谢,但代表只是帮助他人和学习他人经验的额外奖励。 ;-)

标签: php syntactic-sugar


【解决方案1】:

您可以使用以下命令压缩此特定实例:

if (array($x, $x, $y, $m, $f, $h, $q, $w)
 == array($y, $z, $v, $t, $x, $g, $w, $p))

但我不确定这是否是您想要的。你的单字母变量名有点抽象。

如果您担心可读性,那么使用 and 而不是 && 有时会有所帮助。

【讨论】:

  • 谢谢。单字母变量只是因为我不想输入常规变量名。
  • 我的心皮隧道个人更喜欢&&(我也觉得它比“and”更直观,但可能只是我自己。)
  • @Brad:如果这对我来说是一个常见问题,我什至会走这么远,将其设为 URL 字符串 "$x=$y $x=$z $y=$v",并通过 url_parse/array_keys/values 包装函数进行比较。取决于 var 类型。在任何情况下肯定是一个辅助函数。
  • 如果这些是实际对象,traditional comparison 有什么问题?
猜你喜欢
  • 2012-10-10
  • 2010-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多