gpt4 book ai didi

ruby - 在 Ruby 中使用位掩码或其他数组过滤数组

转载 作者:数据小太阳 更新时间:2023-10-29 08:33:22 25 4
gpt4 key购买 nike

我想知道 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com