programing

루비: 범위 내에서, 그러나 세트 증분으로 반복하는 방법은 무엇입니까?

css3 2023. 7. 4. 22:02

루비: 범위 내에서, 그러나 세트 증분으로 반복하는 방법은 무엇입니까?

그래서 저는 다음과 같은 범위에서 반복하고 있습니다.

(1..100).each do |n|
    # n = 1
    # n = 2
    # n = 3
    # n = 4
    # n = 5
end

하지만 제가 하고 싶은 것은 10시까지 반복하는 것입니다.

그래서 증가하는 대신에n다음 1까지n실제로는 10, 20, 30 등이 될 것입니다.

전체 API는 http://ruby-doc.org/core/classes/Range.html#M000695 을 참조하십시오.

기본적으로 당신은 사용합니다.step()방법.예:

(10..100).step(10) do |n|
    # n = 10
    # n = 20
    # n = 30
    # ...
end

사용할 수 있습니다.

0.step(30,5) do |num|
  puts "number is #{num}"
end
# >> number is 0
# >> number is 5
# >> number is 10
# >> number is 15
# >> number is 20
# >> number is 25
# >> number is 30

이를 위한 또 다른 친숙한 방법이 있습니다.

for i in (0..10).step(2) do
    puts i
end
rng.step(n=1) {| obj | block } => rng

각 n번째 요소를 블록에 전달하면서 erng을 반복합니다.범위에 숫자 또는 문자열이 포함된 경우 자연 순서가 사용됩니다.그렇지 않으면 step이 범위 요소를 통해 성공을 반복합니다.다음 코드는 클래스 수준 설명서에 정의된 클래스 X를 사용합니다.

range = Xs.new(1)..Xs.new(10)
range.step(2) {|x| puts x}
range.step(3) {|x| puts x}

생성물:

1 x
3 xxx
5 xxxxx
7 xxxxxxx
9 xxxxxxxxx
1 x
4 xxxx
7 xxxxxxx
10 xxxxxxxxxx

참조: http://ruby-doc.org/core/classes/Range.html

......

언급URL : https://stackoverflow.com/questions/4346335/ruby-how-to-iterate-over-a-range-but-in-set-increments