为什么使用.is_a方法?返回除true或false以外的其他值?

时间:2019-04-17 06:10:36

标签: arrays ruby symbols

我期望符号在数组中返回true或false,但是为什么它返回true元素的值。更具体地说,.is_a如何?工作,我以为它返回的是真还是假。

my_array = ["raindrops", :kettles, "whiskers", :mittens, :packages]

symbol_filter = lambda {|x| x.is_a? Symbol}
symbols = my_array.select(&symbol_filter)
puts symbols

我期望输出为true或false,但输出为

[:kettles, :mittens, :packages].

1 个答案:

答案 0 :(得分:1)

使用collect获得所需的输出

my_array = ["raindrops", :kettles, "whiskers", :mittens, :packages]

symbol_filter = lambda {|x| x.is_a? Symbol}
symbols = my_array.collect(&symbol_filter)
puts symbols

O / p

2.4.0 :066 >     symbols = my_array.collect(&symbol_filter)
=> [false, true, false, true, true]