Мой плагин searchInRuntime имеет a: SP и a: Vsp управляет, чтобы это добилось цели, когда названо пьяный. Однако файлы должны существовать.
Хотя решение break
работает, я думаю, что более функциональный подход действительно подходит для этой проблемы. Вы хотите взять
первые 10 элементов и распечатать их, поэтому попробуйте
items.take(10).each { |i| puts i.to_s }
В Ruby нет оператора ++
. Также принято использовать do
и end
для многострочных блоков. Изменение решения дает:
c = 0
items.each do |i|
puts i.to_s
break if c > 9
c += 1
end
Или также:
items.each_with_index do |i, c|
puts i.to_s
break if c > 9
end
См. each_with_index
, а также Программирование Ruby Break, Redo и Next .
Обновление: Ответ Чака с диапазонами более похож на Ruby, а ответ nimrodm с использованием take
еще лучше.
break
работает для раннего выхода из цикла, но более идиоматично просто выполнить items [0..9] .each {| i | помещает i}
. (И если все, что вы делаете, это буквально печатает элементы без каких-либо изменений, вы можете просто сделать put items [0..9]
.)
Другой вариант -
items.first(10).each do |i|
puts i.to_s
end
Это читается мне немного легче, чем нарушение работы итератора, и сначала вернет столько элементов, сколько доступно, если их недостаточно.
Это похоже на то, что вы хотите?
10.times { |i|
puts items[i].to_s
}
items.each_with_index { |i, c| puts i and break if c <= 9 }
Другой вариант:
puts items.first(10)
Обратите внимание, что это отлично работает с массивами менее 10 элементов:
>> nums = (1..5).to_a
=> [1, 2, 3, 4, 5]
>> puts nums.first(10)
1
2
3
4
5
(Еще одно замечание, многие люди предлагают некоторую форму put i.to_s
, но в таком случае не является ли .to_s
избыточным? put
автоматически вызовет .to_s
для нестроковой распечатайте, подумал я. Вам понадобится .to_s
, если вы хотите сказать, что ставит 'A' + i.to_s
или что-то подобное.)