首页 > 解决方案 > 为什么方法.is_a?返回真假以外的其他值?

问题描述

我期待符号在数组中返回真或假,但为什么它返回为真元​​素的值。更具体地说,.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

我期望输出为真或假,但输出是

[:kettles, :mittens, :packages].

标签: arraysrubysymbols

解决方案


使用 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] 

推荐阅读