#ruby #ruby-1.8
#ruby #ruby-1.8
Вопрос:
Я использую ruby 1.8.5, и each_slice()
метод для массива не работает.
Мой код выглядит примерно так:
array.each_slice(3) do |name,age,sex| ..... end
Есть ли какой-либо другой способ реализовать ту же функциональность в моей старой версии ruby.
Комментарии:
1. @железный дровосек: Что было не так с тегом ruby-1.8?
Ответ №1:
Создайте свой собственный:
module Enumerable
def each_slice( n )
res = []
self.each do |el|
res << el
if res.size == n then
yield res.dup
res.clear
end
end
yield res.dup unless res.empty?
end
end
Ответ №2:
Этот парень
http://tekhne.wordpress.com/2008/02/01/whence-arrayeach_slice/
выяснил, что вы можете
require 'enumerator'
и это работает
Ответ №3:
У меня нет 1.8.5, но вы можете попробовать это
0.step(array.size, 3) do |i|
name, age, sex = array[i], array[i 1], array[i 2]
...
end
Комментарии:
1. большое вам спасибо за ваш ответ.. В приведенном выше коде, скажем, например, если количество элементов равно 3, это отлично работает в течение одной итерации, но во второй и третьей итерации имя, возраст, пол возвращают nil…
Ответ №4:
Я сам им не пользовался, но подумайте об использовании драгоценного камня backports.