作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我想知道 Ruby 中是否有一个 Array 方法允许根据另一个数组或位掩码过滤一个数组。
这里是一个示例和一个用于说明目的的快速实现:
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']
谢谢!
最佳答案
在 ruby 1.9 中,Fixnum#[]
为您提供特定位置的位值,因此它适用于整数和数组。我在想这样的事情:
class Array
def filter f
select.with_index { |e,i| f[i] == 1 }
end
end
%w(a b c).filter([1, 0, 1]) #=> ['a', 'c']
%w(a b c).filter(4) #=> ['c']
%w(a b c).filter(5) #=> ['a', c']
%w(a b c).filter([1]) #=> ['a']
关于ruby - 在 Ruby 中使用位掩码或其他数组过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12084867/
我是一名优秀的程序员,十分优秀!