[Ruby] Вопрос по итераторам

Kirill A. Shutemov k.shutemov на sam-solutions.net
Пт Дек 3 15:35:41 MSK 2004


On Fri, Dec 03, 2004 at 11:55:53AM +0200, Kravchenko Sergey wrote:
> Спасибо за ответ, но вариант с next мне не подходит.
> Как я уже сказал, необходимо перейти к следующему значению итерации,
> _не возвращаясь в начало цикла_
> Насколько я понимаю, такая возможность должна быть предусмотрена в самом
> интерпретаторе, но подобной команды я в описании языка не нашёл - возможно,
> она всё-таки не предусмотрена. Если это действительно так - хотелось бы
> узнать мнение народа по этому поводу. Может быть есть какой-нибудь способ
> сделать это красиво? ;)
> Вот другой (более точный) пример задачи:
> 
> output = Array.new
> 
> [ "a", "b", "b1", "b2", "c", "d" ].each{|i|
>     output = [ i ]
> 
>     if i == "b"
>         ### получить все следующие элементы итерации,
>         ### начинающиеся с буквы "b" (т.е. "b1", "b2")
>         ### и записать их в массив output
>     end
> 
>     puts output.join( " " )
> }
> 
> результатом должен быть следующий выход:
> "a"
> "b b1 b2"
> "c"
> "d"
> 
Первое решение которое пришло в голову:

count_next = 0

a = [ "a", "b", "b1", "b2", "c", "d" ]

a.each_index{|i|
    unless count_next == 0
	count_next -= 1
	next
    end
    
    output = [ a[i] ]
    
    if a[i] == "b"
	while a[i+1] =~ /b.*/
	    count_next += 1
	    i += 1
	    output.push a[i]
	end
    end

    puts output.join( " " )
}

-- 
Kirill A. Shutemov				Belarus, Minsk
E-mail:	k.shutemov (AT) sam-solutions.net
JID: kas (AT) altlinux.org
ICQ: 152302675

> Можно ли программно установить uid процесса = 0, если приложение
> запущено без флажка set user ID on execution, от простого пользователя,
> и без помощи программ типа su, sudo и т.п. приложений?????
Если вы найдёте способ, сообщите нам, пожалуйста, и мы немедленно выпустим
security update.
		-- voins in community@
----------- УМЕДХЭБС ЮБУФШ -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: отсутствует
Url     : http://lists.altlinux.ru/pipermail/ruby/attachments/20041203/3dcde17d/attachment.bin


Подробная информация о списке рассылки Ruby