此:
arry = %w[cat dog fish]
arry.any? {|s| pp s.include?('sh')}
输出:
false
false
true
当我尝试通过这样做将元素推入数组时,
tester = []
arry = %w[cat dog fish]
arry.any? {|s| tester << s.include?('sh')}
pp tester
它输出:
[false]
仅推送一个元素。不知道为什么我不能将结果从include?
推入数组。
如何将所有结果放入数组?
答案 0 :(得分:5)
Enumerable#any?
一旦该块返回truthy
值,便立即退出。
我不确定您为什么会在此用例中使用any?
,但实际上是:在第一次迭代时,该块返回了一个真实的数组。
改为使用#each_with_object
或什至简单的#map
:
arry.each_with_object([]) { |s, tester| tester << s.include?('sh') }
arry.map { |s| s.include?('sh') }
我的最爱:
arry.map(&/sh/.method(:!~)).map(&:!)