我有一个带有if elsif语句的for循环。在第一个if,如果条件满足,我希望它停在那里并继续循环的下一次迭代。
这是我想要做的非常简化的版本:
array = [1,2,3,4,"x"]
for i in 0..(array.count -1)
if array[i] == "x"
#start next for loop iteration without executing the elsif
elsif array[i] < 3
puts "YAY!"
end
end
我正在尝试做的是遍历一个数组,其中除了一个元素之外的所有元素都是整数,但其中一个是一个字符串。在字符串元素上,我需要循环(无论哪种类型最好)跳过其余代码并转到循环的下一次迭代。这很重要,因为第二个if语句使用'array_element&lt; 11条件'所以,如果它在字符串元素上运行,我得到“字符串与11的比较失败”
所以我想要arr [x] [3]这就是我尝试的但是它给了我8 8 8 8而不是8。
arr = [[1,2,3,"4"], [5,6,7,8], [9,10,11,12]]
arr.each{|x|
x.each {|i|
next if x[3].instance_of? String
if x[3] < 12 puts x[3]
end
}
}
好的,这有效!!谢谢你iAmRubuuu !!
arr = [1,2,3,"4"], [5,6,7,8], [9,10,11,12], [13,14,15,"16"], [17,18,19,20]]
arr.each_with_index{|x, i|
next if x.last.instance_of? String
if x.last < 21
puts x.last
end
}
给我输出
8
12
20
答案 0 :(得分:5)
请勿使用for in
,请使用each
。
(0..10).each do |i|
next if i == 5
if i == 10
puts "YAY!"
end
end
答案 1 :(得分:2)
根据您的编辑,希望您正在寻找以下内容:
arr = [1, 2, 3, "11", 11]
arr.each do |x|
next if x.instance_of? String
puts "#{x} is #{x.class}"
end
输出:
1 is Fixnum
2 is Fixnum
3 is Fixnum
11 is Fixnum
修改强>
代码:
arr = [[1,2,3,"4"], [4,5,6,7], [8,9,10,11]]
arr.each{|x|
x.each{ |i|
next if i.instance_of? String
puts "#{i} is #{i.class}"
}
}
输出:
1 is Fixnum
2 is Fixnum
3 is Fixnum
4 is Fixnum
5 is Fixnum
6 is Fixnum
7 is Fixnum
8 is Fixnum
9 is Fixnum
10 is Fixnum
11 is Fixnum
V_1(来自我在回答帖子中的第一条评论)
arr = [[1,2,3,"4"], [4,5,6,7], [8,9,10,11]]
puts arr[1].last,arr.last.last
输出:
7
11
V_2(来自我在回复帖子中的第一条评论)
arr = [[1,2,3,"4"], [4,5,6,7], [8,9,10,11]]
arr.each_with_index{ |x,i|
next if i == 0
#p x,i
p "last element of inner array:#{x.last}"
}
输出:
"last element of inner array:7"
"last element of inner array:11"