如何在ruby哈希选择中使用不同的条件

时间:2013-04-23 03:02:56

标签: ruby

我正在尝试选择哈希的子集。 假设我有一个方法可以做到这一点,例如,

def create_html (entities, low, high)
  entities
    .select{|k,v| v[:entity_count] < low and v[:community] == true}
    .sort_by{| k,v| v[:count]}.each do | k,v |
.....

我想处理各种条件: 假设下限(低)和上限(高)

  1. count&lt;低
  2. count&gt;低和计数&lt;高
  3. count&gt;高
  4. 我也想使用lte和gte。有没有一种简单的方法来处理我的select语句中的所有组合?有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

我不确定我明白你要做什么。但你可以使用一个块来提取条件。

def create_html (entities)
  entities
    .select{|k,v| yield(v[:entity_count], v[:community]) }
    .sort_by{| k,v| v[:count]}.each do | k,v |
.....

然后你可以根据那个领域拥有所有条件。

create_html(entities) { |count| count < low }
create_html(entities) { |count| count > low && count < high }
create_html(entities) { |count| count < low }

# Also with community == true
create_html(entities) { |count, community| count < low && community }