我有以下代码
animals=['lion','tiger','zebra']
animals.each{|a| puts a}
我想在这个数组中只打印老虎,因为我写了这样的东西
animals.each{|a| if a==1 puts animals[a]}
但它不起作用,为什么?
我有以下代码
animals=['lion','tiger','zebra']
animals.each{|a| puts a}
我想在这个数组中只打印老虎,因为我写了这样的东西
animals.each{|a| if a==1 puts animals[a]}
但它不起作用,为什么?
你可以像这样玩枚举:
animals.select{ |a| a == 'tiger' }.each{ |a| puts a }
也许你正在寻找这个
animals.each_with_index{|animal, index| puts animal if index==1}
请注意,“老虎”出现在索引 1 而不是 2。
你在你的情况下做错了: -
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
你可以简单地做到这一点
animals.fetch(animals.index('tiger')) if animals.include? 'tiger'
或者
animals[animals.index('tiger')] if animals.include? 'tiger'