[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