Почему метод .is_a? возвращать другие значения, кроме true или false? - PullRequest
0 голосов
/ 17 апреля 2019

Я ожидал, что символы вернут истину или ложь в массиве, но почему он возвращает значения истинных элементов?Более конкретно, как работает .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 Ответ

1 голос
/ 17 апреля 2019

Используйте сбор для получения желаемого результата

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] 
...