Ruby: Belirli bir aralıkta, ancak belirli aralıklarla nasıl yinelenir?


Yanıtlar:



12

Kullanabilirsiniz Numeric#step.

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

6

İşte bunu yapmanın belki de daha tanıdık görünen bir yolu:

for i in (0..10).step(2) do
    puts i
end

10
Üzgünüz, ama yakut stil rehberi kullanım fordöngülerini kesinlikle caydırıyor .
Darth Egregious

@DarthEgregious neden bu?
Doug

Her şeyin bir nesne ve her eylemin bir yöntem çağrısı olduğu felsefesinin bir uzantısıdır . Bu nedenle, döngü için yerleşik bir kullanmak yerine for, eachyöntemi kullanmalısınız .
Darth Egregious

5
rng.step(n=1) {| obj | block } => rng

Her nth elementi bloğa geçirerek rng üzerinde yinelenir. Aralık sayı veya dize içeriyorsa, doğal sıralama kullanılır. Aksi takdirde adım aralık öğelerini yinelemek için başarılı olur. Aşağıdaki kod, sınıf düzeyi belgelerinde tanımlanan Xs sınıfını kullanır.

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

üretir:

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

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

......

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.