如果X不等于Y或Z则为红宝石

时间:2014-02-04 20:13:19

标签: ruby

我有以下内容:

a_disposition = [nil,'test','demo']

a_volume = a_disposition.count{|x| x != nil}

我想计算所有非nil和非'test'的值。说count where x is not nil and x is not 'test'的红宝石方式是什么?我正在使用ruby 2.0。

4 个答案:

答案 0 :(得分:6)

(a_disposition-[nil,'test']).count # => 1

答案 1 :(得分:0)

另一种方法。它不是超级高效,但它具有良好的功能触感。 :)

a_disposition = [nil,'test','demo']

a_volume = a_disposition.reject(&:nil?).reject{|d| d == 'test'}.count # => 1

答案 2 :(得分:0)

a_disposition.compact.reject{ |x| x == 'test' }.count

答案 3 :(得分:0)

我认为对块使用count方法是最简洁的方法:

a_disposition.count{|x| !x.nil? && x != 'test'}