| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
AleXp 04.10.2005 13:17
Перестаем улыбаться - уже разобрался и переделал:@debugShowHash[h][k;v;_s]
###################################################################################################
# Визуализация объекта класса hash
#
# string
# debugShowHash[
# hash h
# ]
#
<br>
$_s[$caller._s ^; ^; ^; ^; ^; ^; ^; ^; ^; ^; ^; ^; ]
^h.foreach[k;v]{
^if(!def $v){$_s^$.$k = ^debugShowVoid[$v]}
^if($v is bool){$_s^$.$k = ^debugShowBool[$v]}
^if($v is string){$_s^$.$k = ^debugShowString[$v]}
^if($v is int || $v is double){$_s^$.$k = ^debugShowDouble($v)}
^if($v is hash){
$_s^$.$k (hash) = ^debugShowHash[$v]
$caller._s[^_s.mid(^eval(^_s.pos[ ]+1))]
}
}
#end @debugShowHash[]А насчет "лишних комментариев"... Когда я был молодой, то меня учили документировать код. В частности, открыв файл visualization.p, любой программист увидав описание метода в самом начале файла, поймёт что в нем делается и зачем. Можно конечно убрать строки # @debugShowObject[]Визуализация объектов # @debugShowVoid[]Визуализация пустых объектов # @debugShowString[]Визуализация объекта класса string # @debugShowTable[]Визуализация объекта класса table # @debugShowImage[]Визуализация объекта класса image ...но тогда надо будет написать много-много всего на страничке для скачивания этой библиотеки. И после скачивания человек пытающийся вникнуть в чужой (мой) код будет скакать туда-сюда между браузером, редактором с открытым файлом visualization.p, каким-нибудь readme.doc, и этим форумом. Оно надо? А, при необходимости, удалить мои "лишние" комментарии из файла visualixation.p любой может в два удара по клавишам - это как раз не проблема.
@TrimArr[arrHash][_subHash;_boolResult]
###################################################################################################
# Функция удаляет из массива все элементы с пустыми значениями. Возвращает
# "истину", если был удален хоть один пустой элемент, иначе - "ложь".
#
# bool
# TrimArr[
# arrHash hash
# ]
#
# Если входной hash определен...
^if(def $arrHash){
# Инициализация переменной результата
$_boolResult[$FALSE]
# Создание пустого hash'а-вычитаемого
$_subHash[^hash::create[]]
# Бежим по ключам входного hash'а
^arrHash.foreach[_key;_var]{
# Если значение текущего ключ представляет собой строку из пробелов
^if($_var is string){$_var[^_var.trim[]]}
# Если значение ключа пусто
^if(!def $_var){
# Формируем hash-вычитаемое
$_subHash.$_key[]
# Определяем результат выполнений функции как положительный
$_boolResult[$TRUE]
}
}
# Вычитание из входного hash'а пустых ключей
^arrHash.sub[$_subHash]
# Результат работы функции
$result($_boolResult)
}{
# Результат функции при пустом входящем hash
$result($FALSE)
}
#end @TrimArr[]Это как нижнее бельё, в т.ч. и у мужика, которое всегда должно быть цивильным и привлекательным: никогда не знаешь куда жизнь закинет вечером и как сложится ситуация. Пришел в гости, тяпнул полташку, начал раздеваться, а у тебя трусы "семейного" типа и до колен - ну неудобняк же! Придется ещё пару раз "тяпнуть" чтобы снять напряжение, и, не ровен час, все пьянством и закончится, как обычно в общем ;)