Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Lifesource 19.12.2002 18:59
Александр я тут бился с этим делом никак не выходит, вот привожу пример скажите что не так?...@main[] ###Определяем хеш (оригинал) $global_hash[$.row1(10) $.row2[$.21(210) $.22(220)] $.row3[$.31(310) $.32[$.temp[value] $.pop[3]]]] $new_hash[^add_with_change[$global_hash]] ^new_hash.row3.32.add[$.imap[4]] ^$GLOBAL_HASH= ^show_ready_hash[$global_hash]<br> ^$NEW_HASH= ^show_ready_hash[$new_hash] <font color="red" size="10pt">И как видим всё добавилось в оригинал :( </font> #Метод создаёт копию оригинала причём добовляет ещё один ключ в копию @add_with_change[my_hash] $result[^hash_create[$my_hash]] ^result.row2.add[$.999[poops]] ### Метод содаёт копию хеша, переданного в качестве параметра, при этом #### копирует структуру оригинала, не ссылаясь на объекты(только хеши) содержащиеся в оригинале ##### (блин как хочется в это верить, но что то не так:( ) @hash_create[temp_hash][key;value] ^if($temp_hash is 'hash'){ $result[^hash::create[$temp_hash]] ^rem{если убрать из конструктура параметр, то потеряется ключ 31 в row3(куда девается, не могу понять...)} ^temp_hash.foreach[key;value]{ ^if($value is 'hash'){ ^result.add[$.$key[^hash_create[$value]]]} }{ ^result.add[$.$key[$value]] } }{$result[$temp_hash]} ### Метод выводит содержимое хеша @show_ready_hash[this_hash][key;val] ^if($this_hash is 'hash'){ <ul> ^this_hash.foreach[key;val]{ ^if($val is 'hash'){ <li>$key^[ ^show_ready_hash[$val] ^] }{ <li> ^if($val is 'string'){$key^[$val^]}{$key^($val^)} } }[</li>] </ul> }{ <br><font color="red" size="6pt"> <i><b>The parameter is not a hash! Here is its value=</b></i></font> <font color="green" size="7pt">$this_hash</font><br>}