parser

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

 

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

Нестрогая типизация это всегда магия

Den 16.02.2021 13:43

По этой причине, я всегда, использую self,result,в методах, чтобы новые версии не ломали код.

Но вот это поведение:
@test2[]
-^first[]
кажется перебором с магией, контраргумент такой:

в общем случае, кода Парсера, в виду его целевой особенности, как бы один большой print, т.е. все что не код, то вывод в поток строки.

Поэтому, в любой непонятной ситуации, в которой нет явного указания, нам следует ожидать сброса/приведения к типу по-умолчанию - строке.

Таким, образом из примера, ну и что, что @first[] возвращает int,
в самом то @test1 вместо явного result используется по сути строковая конкатенация "-" и результата @first, и такая себе идея получить это автоматически как double

Второй контраргумент:
такое выражение (без result в теле метода) как я видел, часто используется в сочетании с
@method[][result]
-
$some $output
где эта магия как раз направлена на удобство какой нить рекурсивной конкатенации строки, и могут быть проблемы где-то внезапно получить double из-за того что $some возвращает число

т.о. чтобы обезопасить себя от новой числовой магии, придётся писать что то типа:
@test1[]
-[^first[]]
Имхо, это странно.

Поэтому, если все же принять во внимание, что изначательнао таргетированная на string, основа языка во всех подсахаренных магических синтаксисах старалась сохранять хотя бы единообразие сохранения string, то и код типа
$v(^test1[])
$v($string)
должен вести себя одинаково, во всех других вариантах, отличных от default магии, у нас есть возможность $result()