簡體   English   中英

有沒有一種更慣用的方式來表達循環中還剩下多少次迭代?

[英]Is there a more idiomatic way to express how many iterations are left in my loop?

我正在寫這樣的Ruby循環:

iterations = 10

until iterations == 0
    unless iterations == 1
      puts "#{iterations} iterations until done"
    else
      puts "#{iterations} iteration until done"
    end

    iterations -= 1
end

puts "Done"

我想知道是否還有更多“ Ruby方式”來優化/編寫此代碼。 有人有什么想法嗎?

10.downto(1) do |iteration|
  puts "#{iteration} iteration#{'s' if iteration > 1} until done"
end
puts 'Done'
require 'active_support/inflector'

10.downto(1).each { |i| puts "#{i} #{'iteration'.pluralize(i)} until done" }
puts 'Done'

用范圍對象向上計數

如果不需要倒數,則可以通過迭代Range對象進一步簡化。 例如:

(1..10).each { |i| puts "#{i} iterations completed" }

這將打印:

1 iterations completed
2 iterations completed
3 iterations completed
4 iterations completed
5 iterations completed
6 iterations completed
7 iterations completed
8 iterations completed
9 iterations completed
10 iterations completed

反轉范圍

如果您已經有一個Range對象,並且想倒計時而不必調用Integer#downto,則也可以反轉Range。 例如:

(1..10).to_a.reverse.each  { |i| puts i }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM