0

我有以下代码

animals=['lion','tiger','zebra']
animals.each{|a| puts a}

我想在这个数组中只打印老虎,因为我写了这样的东西

animals.each{|a| if a==1 puts animals[a]}

但它不起作用,为什么?

4

4 回答 4

2

你可以像这样玩枚举:

animals.select{ |a| a == 'tiger' }.each{ |a| puts a }
于 2013-09-04T05:55:27.847 回答
1

也许你正在寻找这个

animals.each_with_index{|animal, index| puts animal if index==1}

请注意,“老虎”出现在索引 1 而不是 2。

于 2013-09-04T06:24:04.010 回答
1

你在你的情况下做错了: -

animals.each{|a| if animals[a]==2 puts a}
  • inline if声明你以错误的方式。

  • #each传递数组的元素,而不是索引。所以animals[a]行不通。它会抛出错误为no implicit conversion of String into Integer (TypeError).

使用以下方法执行此操作Array#each_index

animals=['lion','tiger','zebra']
animals.each_index{|a| puts animals[a] if animals[a] == 'tiger' }
# >> tiger
于 2013-09-04T05:52:40.897 回答
0

你可以简单地做到这一点

 animals.fetch(animals.index('tiger')) if animals.include? 'tiger'

或者

 animals[animals.index('tiger')] if animals.include? 'tiger'
于 2013-09-04T05:58:36.157 回答