Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
moko 17.02.2021 01:05
Что есть зависимость результата от вызова, как не тип?Так просто разный результат может(уже мог) получиться.
@main[] $n(1) $s[^test[]] "$s" $v(^test[]) "$v" @test[] magic ^n.int[] magicВыдаст:
@GET[тип обращения] [3.4.0]
код, обрабатывающий обращения к объекту/классу в определённых контекстах вызова
тип обращения ... может принимать одно из следующих значений: def, expression, bool, double, hash, table или file.
От такого ожидаешь, скорее, исключенияТут достаточно тонкая грань с $h[ ^hash::create[] ]. По мне так да, логичнее было бы разрешать только пробельные символы. Но это лишние проверки по ходу исполнения (причем не самые быстрые), поэтому видимо изначально было решено не выдавать исключения.
то логичным кажется отбрасывать всё, что не $result, если он явно определён.Если
@test[] ^first[] ^first[]Выдает исключение, то логично, что
@test[] ^first[] ^first[] $result(true)Тоже выдает исключение, поскольку парсер заранее не знает, что будет следующим оператором.
приходится складывать результаты работы в tmp-переменныеБоюсь от этого можно избавиться только если придумаем способ явно декларировать использование $result в методе. Можно конечно анализировать код, но тогда всякая экзотика типа $caller.result или ниже может сломаться...
@main[] $s[result] 0? $$s[1?]