如何在ruby中编写这种类型的for循环?
for(i = 0; i < arr.length; i = i+2) {
}
如果步骤为1,我知道如何编写它,但是如果步骤&gt; 1,如何制作?
答案 0 :(得分:11)
您可以将.step
大小实际指定为参数:
(0...arr.length).step(2) { |i| puts arr[i] }
答案 1 :(得分:10)
另一种方法是使用 Array::each_slice :
arr.each_slice(2) { |n| p n.first }
答案 2 :(得分:2)
(0...arr.length).step(2) do |n|
end
OR
for i in (0...arr.length).step(2) do
puts arr[i]
end
步骤用于递增n值,此循环将持续到arr.length
答案 3 :(得分:2)
你也可以试试这个:
...
if(empty($username)) {
echo "<span class='message error'>Please enter username.</span>";
exit();
}
...
我喜欢已经回答的> arr = Array('a'..'z')
#=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
> arr.select.each_with_index{|k,i| k if i.even?}
#=> ["a", "c", "e", "g", "i", "k", "m", "o", "q", "s", "u", "w", "y"]
和step
方法,所以这只是另一种方法。 ;)
答案 4 :(得分:0)
一百万种解决数组问题的方法。如果您实际上不需要循环,则可以轻松获取值
a = (0..20).to_a
a.values_at(*(0..a.size).step(2))
#=> => [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
答案 5 :(得分:0)
使用while循环可以按如下方式完成: -
#!/usr/bin/ruby
arr=[1,2,3,4,5,6]
i=0
begin
puts arr.at(i*2)
i += 1
puts "value of i is #{i}"
end while (i*2) < arr.length