如何在Ruby中使用代码块?

时间:2013-09-04 05:50:04

标签: ruby

我有以下代码

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

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

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

但是为什么不行?

4 个答案:

答案 0 :(得分:2)

你可以玩这样的可枚举:

animals.select{ |a| a == 'tiger' }.each{ |a| puts a }

答案 1 :(得分: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

答案 2 :(得分:1)

也许你正在寻找这个

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

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

答案 3 :(得分:0)

你可以简单地做到这一点

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

 animals[animals.index('tiger')] if animals.include? 'tiger'