parser

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

 

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

Ответ

G_Z 09.12.2015 14:58 / 09.12.2015 15:01

Возможно огорчу, но ($a) - это тоже код.
Я, собственно, о том же.
Не очень понял, о чем идет речь. Идет сортировка по строке или числу внутри ^hash.sort[] определяется по типу результата (строка или не строка).
Непосредственно внутри метода такую оценку можно делать, всё равно код выполнять.
А посредник контекст правильно передать не может.

Уже приведённый мною пример:
@sort[key;value;sort;order]
^switch[]{
	^case[]{
		^self.data.sort[k;v](
			$caller.$key[$k]
			$caller.$value[$v]

			$sort
		)[$order]
	}
	^case[]{
		^self.data.sort[k;v]{
			$caller.$key[$k]
			$caller.$value[$v]

			$sort
		}[$order]
	}
}
Как мне внутри метода, не выполняя junction-code, понять позвали мой метод так:
^h.sort()
или так:
^h.sort{}
?

Зная это, я могу соответствующим образом вызвать hash.sort.

Сейчас в таких случаях два варианта:
1. дополнительный параметр «тип сортировки», что костыль;
2. предварительное выполнение кода сортировки и проверка типа результата, что даёт лишнее выполнение кода сортировки.

Второй вариант допустим, конечно, одно лишнее выполнение кода, но всё же лишнее.