【问题标题】:Why does the method .is_a? returning other values other than true or false?为什么方法.is_a?返回真假以外的其他值?
【发布时间】:2019-09-07 07:29:45
【问题描述】:

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

【问题讨论】:

  • is_a? 返回 true 或 false,但 select 返回序列中与给定谓词匹配的项目。您正在打印select 的输出,而不是is_a? 的输出
  • 试试map 而不是select

标签: arrays ruby symbols


【解决方案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] 

【讨论】:

  • collectmap 的别名。有些人(和机器人)更喜欢map
猜你喜欢
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
  • 2012-01-06
相关资源
最近更新 更多