[Moscow.pm] XS как переименовать модуль?
Dmitry Karpich
meettya на gmail.com
Чт Фев 3 12:01:08 PST 2011
Все же еще немного пооффтоплю.
On Feb 3, 2011, at 12:54 AM, Ivan Petrov wrote:
> если сюда вставить ескейпинг, затем добавить возможность прерваться в любом месте этого процесса, поделать что-то другое, затем вернуться и продолжить, то получается что обращаться с хешом как с массивом наиболее удобно. А если считать что в перерыве кто-то может почитать этот хеш и неявно сбить итераторы, то на итераторы и полагаться-то нельзя. что остается? индекс в массиве (который из хеша получен)
>
Локализуйтесь, с присвоением по значению, и в замыкание ее - никто итератор не собьет, локальная переменная ИМХО физически недоступна вне блока.
Ну, вот так например - http://pastebin.com/TEbW5t4m
Разве что накладно может получится, если хеши большие, наверное.
> ну и хеши всегда в массивы обращались и наоборот
>
> %h = @array;
> @array = %hash;
>
> %hash = (%hash, %hash2);
>
> и так далее.
>
Позвольте уж позанудничать - хеш в массив не обращается, ровно как и наоборот, это просто операция присвоения в списковом (list) контексте.
> на уровне перла средств манипуляции хешами как массивами полным полно, а вот на уровне perl api я такой возможности не нашел. а поскольку я в XS новичок, вот и спрашиваю :)
Мммм... вот честно, могу припомнить только псевдохеши из верблюдокнижки, но это черная магия. Да и то это не "хешем как массивом". Более того, мне всегда казалось что последовательность выдачи ключей из хеша должна быть случайна. Оно вроде бы сейчас не так, но по идее...
Подробная информация о списке рассылки Moscow-pm