parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

наткнулся на следующее неудобство, имееющее место быть при текущем положении вещей

Misha v.3 25.01.2007 14:09 / 25.01.2007 14:21

[в новой версии sql классов]

1. есть глобальный ключик $.bCacheAuto "кешировать запросы автоматически", который я могу указать конструктору sql объекта. соотв. ключ имеет 2 значения: true|false (или 1|0). при его задании он копируется в переменную объекта: $self.bCacheAuto($hParam.bCacheAuto)

2. у любого sql запроса я могу пожелать отключить кеширование. мне кажется логичным добавить примерно аналогичный ключик с примерно аналогичными значениями. при этом если при создании объекта я указал $.bCacheAuto(false) [т.е. я не хочу автоматически кешировать всё], то указав $.bCacheAuto(true) _у_запроса_ я включу авто-кеширование этого запроса, а если при создании объекта я указал $.bCacheAuto(true) [т.е. я хочу кешировать все по умолчанию], то указав $.bCacheAuto(false) _у_запроса_ я хочу отключить кеширование у этого конкретного запроса.

в результате получается, что я не могу легко и просто отличить был-ли задан у запроса $.bCacheAuto(false) или этот ключ вообще не был указан, т.к. и ^if(def $hParam.bCacheAuto){}{} и ^if($hParam.bCacheAuto){}{} возвращают false в обоих случаях.

получается, что в моем случае приходится вместо понятного кода, работающего в случае задания значений и в виде bool и в виде int:
^if(
	$hParam.bCacheAuto
	 || (
		$self.bCacheAuto
		&& !def $hParam.bCacheAuto
	)
){авто-кешируем}
писать такое извращение (да, я считаю это извращением включающее в себя сравнение строк):
^if(
	$hParam.bCacheAuto
	|| (
		$self.bCacheAuto
		&& !($hParam.bCacheAuto is "bool")
		&& !($hParam.bCacheAuto is "int")
		&& !($hParam.bCacheAuto is "double")
	)
){авто-кешируем}
=> более общая формулировка: мы не можем использовать bool параметры и что-то включать значением false, т.к. сложно отличить ситуацию с явным значением false от ситуации с отсутствием параметра.

P.S. готов выслушать предложения по упрощению конструкции от всех, особенно от тех, кто голосовал за false == !def %-)

P.P.S. вариант изменения имени ключа в запросе, чтобы его действие было "инверсным", например на $.bForce, не предлагать, т.к. я считаю что один ключ с одним поведением запомнить проще и так делать правильнее.

P.P.P.S. мнение ПАФ-а видел, результаты голосования тоже, но есть ощущение что после этих граблей текущее поведение def $bool я изменю %-)