parser

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

 

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

Junction-code в разных контекстах — наколенный полиморфизм

G_Z 24.11.2015 16:46 / 25.11.2015 01:16

Хочу в объекте-обёртке звать ^hash.sort[].
Но он, как и ^table.sort[], может принимать junction-code в контексте числа:
^hash.sort[key;value]()[asc|desc]
и строки:
^hash.sort[key;value]{}[asc|desc]
Понять, что передан junction-code теперь можно по ^reflection:is[…;code], а как узнать контекст?
@CLASS
my_hash
…
@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]
	}
}
Можно пойти даже дальше и поставить вопрос перегрузки методов.
Которая есть у нативных методов, но отсутствует у пользовательских.