別の配列またはビットマスクに基づいて配列をフィルタリングできるようにする Array メソッドが Ruby にあるかどうか疑問に思っていました。
以下は、説明のための例と簡単な実装です。
class Array
def filter(f)
res = []
if f.is_a? Integer
(0...self.size).each do |i|
res << self[i] unless f[i].nil? || 2**i & f == 0
end
else
(0...self.size).each do |i|
res << self[i] unless f[i].nil? || f[i] == 0
end
end
return res
end
end
例:
%w(a b c).filter([1, 0, 1]) ==> ['a', 'c']
%w(a b c).filter(4) ==> ['c']
%w(a b c).filter([1]) ==> ['a']
ありがとう!