Ответ
MoKo 25.10.2015 02:41
Непонятно, почему переданный по ссылке метод — не выполняется и is junction,
Метод - это метод, чтобы он выполнился - его надо вызвать (^), да еще параметры передать. "is junction" - историческое отражение внутреннего устройства. Они по факту трех подтипов - код, метод и getter.
а код — взрывается в руках.
Да, обращение $code приводит к выполнению кода.
А насколько трудоёмко реализовать отдельный тип проверки is code для кода, который бы не приводил к выполнению?
Еще раз - вы неправильно понимаете последовательность действий. Сначала выполняется код, а затем результат выполнения идет параметром оператору is.
С точки зрения внутренней логики нет разницы между =$code= и $code is junction. Последовательность действий в первом случае (по факту конечно оптимальнее, тут важна суть):
записать '=' в стек
взять значение из стека и записать в текущий контекст вывода
получить элемент с именем code (в этот момент выполняется код) и записать его в стек.
взять значение из стека и записать в текущий контекст вывода
записать '=' в стек
взять значение из стека и записать в текущий контекст вывода
Последовательность действий во втором случае:
получить элемент с именем code (в этот момент выполняется код) и записать его в стек.
записать 'junction' в стек
вызвать оператор is с двумя параметрами из стека и поместить результат в стек.
То есть $value всегда приводит к одним и тем же действиям, и куда пойдет результат выполнения - оператору is или куда-то еще - неизвестно. То есть в теории можно попробовать понять, что результат пойдет именно is (не знаю как), и вызывать "не получить элемент", а "получить элемент без выполнения кода", корректно обработать не только $code, но и $$code, и $a.b.$c.code (подобное недавно делалось, тут потребуется добавление опкодов). В общем задача совсем непростая...
- Поведение is junction, G_Z [M] 24.10.2015 04:11
- Ответ, MoKo 24.10.2015 20:47
- Ну так мы про это и говорим..., Sumo [M] 24.10.2015 21:57
- Ответ, G_Z [M] 24.10.2015 20:58
- Ответ, MoKo 25.10.2015 02:41
- Ответ, G_Z [M] 25.10.2015 02:55 / 25.10.2015 02:59
- Ответ, MoKo 25.10.2015 03:29
- Ответ, G_Z [M] 25.10.2015 03:33
- Ответ, MoKo 25.10.2015 13:15
- Ответ, G_Z [M] 25.10.2015 14:15
- Ответ, MoKo 25.10.2015 14:26
- Ответ, MoKo 25.10.2015 14:45
- Ответ, G_Z [M] 25.10.2015 15:05
- Ответ, MoKo 26.10.2015 02:55
- Ответ, G_Z [M] 26.10.2015 03:11
- Я понимаю, G_Z [M] 25.10.2015 14:31 / 25.10.2015 14:33
- Ответ, MoKo 25.10.2015 03:03
- Ответ, G_Z [M] 25.10.2015 03:17
- Ответ, MoKo 25.10.2015 03:24
- Есть одна ситуация..., Sumo [M] 24.10.2015 11:30 / 24.10.2015 11:31
- У «кода» другая семантика..., Sumo [M] 24.10.2015 10:37 / 24.10.2015 10:42
- Ответ, G_Z [M] 24.10.2015 16:13 / 24.10.2015 16:17
- Ответ, Sumo [M] 24.10.2015 17:09