|
|
|||||
Регистрация: Aug 2000
Адрес: Одесса
Сообщений: 156
|
Хочу хитрый хеш!!!
Hi, ALL!!
В общем хочу такую штуку: Есть у меня набор строчек такого вида Где val1 - слова(фамилии, к примеру), val2 - только цифры, val3 - смесь букв и цифр. Хочется сделать что-то типа хеша. То есть, ключом будет val1, а по нему получить val2 и val3. При этом иметь возможность не просто узнать значения этих переменных, а и изменять val2 как обычное число (складывать, умножать, etc) Можно это конечно и простым хешем сделать (собрать val2 и val3 в кучу, поставить между ними разделитель, а потом выдирать val2) но уж больно гимморно. Может есть какой-нибудь способ попроще? SPV, приходи, помогай Спасибо. |
|
|||||
Так делай многомерный хэш: ${$myhash{Pupkin}}{bla} = 1000; ${$myhash{Pupkin}}{any} = '10 apr 1976'; ${$myhash{Dudkin}}{bla} = 500; ${$myhash{Dudkin}}{any} = '13 mar 1976'; print $myhash{Pupkin}{bla}; print $myhash{Dudkin}{any}; print $myhash{Pupkin}{bla}+$myhash{Dudkin}{bla};
__________________
Two beer or not two beer?... |
|
|||||
Щас посмотрел - тут даже кучу лишних преобразований сделал Можно и без них, просто:
$myhash{Pupkin}{bla} = 1000; $myhash{Pupkin}{any} = '10 apr 1976'; $myhash{Dudkin}{bla} = 500; $myhash{Dudkin}{any} = '13 mar 1976'; print $myhash{Pupkin}{bla}."\n"; print $myhash{Dudkin}{any}."\n"; print $myhash{Pupkin}{bla}+$myhash{Dudkin}{bla}."\n";
__________________
Two beer or not two beer?... |
|
|||||
Регистрация: Aug 2000
Адрес: Одесса
Сообщений: 156
|
Неее, немного не так
Мне бы по одному ключу получить сразу два значения Типа такого: говорю хешу "Пупкин", а он мне в ответ "Вася". "5" рублей должен. А я ему в ответ - уже не "5", а "10". И он уже не "Вася" а "Федя". Такого плана штучку бы |
|
|||||
Регистрация: Aug 2000
Адрес: Одесса
Сообщений: 156
|
И еще вопросик про хеши.
А в каком порядке в хеши данные храняться? В порядке попадания или еще как? Ну например, забил я хеш значениями, а потом использую цикл : Как скрипт мне результат выдаст? В порядке попадания или по другому? |
|
|||||
2 Winwolf
Post 1 : U hasha yesty tolko 2 "polia" v kotoriye mozno chego-nibud zapihnut : kluch (key) i znacheniye (value)... Prichem oni k drug drugu otnosiatsia sledushim obrazom - kluch (estestvenno priobroshonniy hitroy funkciyey "hash" v integer) - posiciya v pamiaty. A value eto to chto v etoy posicii nahoditsia. Sovet : pochitay, a potom sprashivay. Etot vopros otvechen zhirnimi bukvami vo vseh PDF-ah po Perlu... Pochemu - mol u hasha tolko dva polia? Post 2 : Znacheniya hraniatsia v poriadke kotoriy zadayet funcciya hash... To yest - yesli hash("Vasia") == 1 a hash("Vovochka") == 2, Vasia perviy. No skazhu tebia otkrovenno - ochen malo ludey znayet kak ustroyen algoritm hashirovaniye v Perle. Potomo chto eto ni komu ne nado. Poriadok v kotorom budut vivoditsia danniye yesli zapustish script kotoriy ti napisal - alfanumericheskiy - t.e. 0123456789abcdef ... Tak kak funciya keys() vozvrashayet array s kluchami uporiadochennimi vishe ukazannom poriadke. Последний раз редактировалось kompadre; 29.11.2001 в 17:08. |
|
|||||
Регистрация: Aug 2000
Адрес: Одесса
Сообщений: 156
|
2 kompadre
Цитата:
Где я спрашивал, почему у хеша только два поля? Вопрос был немного другой - как бы используя одно значение в качестве ключа получить два других? При чем не обязательно с помощью хешей. Это слово я использовал как понятие, наиболее близко подходящее по смыслу Последний раз редактировалось Winwolf; 29.11.2001 в 17:35. |
|
|||||
Попробуй в значение запихнуть массив из двух элементов.
|
|
|||||
Регистрация: Aug 2000
Адрес: Одесса
Сообщений: 156
|
А примерчик можно?
А то я это себе как то слабо представляю. Ну с одной тройкой значений еще туда-сюда. А если их много? И заранее не знаю сколько? То тогда как? |
|
|||||
А че ты сплитом обычным пользоваться не хочешь? очень удобно
split join все что тебе надо... Нифмга искать альтернативный путь? Пример: @some= ("Вася", "12", "хочет жрать"); $hash{"Vasya"} = join("::", @some); print ( split("::", $hash{"Vasya"}) );
__________________
Флэш - это искусство(читай издевательство) |
Часовой пояс GMT +4, время: 05:23. |
|
« Предыдущая тема | Следующая тема » |
|
|