如何解决如何使用||简单编写多个比较使用Ruby on Rails
我想这样写条件,但是太长了。 如何使它更简单?
if A
~~~
elsif B == b || B == c || B == d || B == e <-- This part is too long.
~~~
else
~~~
end
我认为它可以写成下面的样子,但是当我在Rails控制台上尝试时,它给了我一个错误。
elsif B == (b || c || d || e)
解决方法
if B == b || B == c || B == d || B == e
可以写为
if [b,c,d,e].include?(B)
,
[EDIT](感谢Sergio Tulentsev的评论)这仅与更长的数组有关,涉及大约10个以上的元素,在OP所描述的确切情况下不适用。我为其他可能具有较长数组或比较列表的用户提供了此答案。 [/ EDIT]
如果速度也是一个问题:请使用Set
,其include?
比Array
快:
# at the top,load this standard library (comes with Ruby):
require 'set'
# ...
if [b,e].to_set.include?(B)
另请参见:
Array.include?比较慢。对于查找,请使用集合而不是哈希:https://stackoverflow.com/a/411164/967621
对数组,集合和哈希进行速度比较版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。