Просто цитата из хакерской документации:
Legacy Vector, Map и Set
Эти типы контейнеров следует избегать в новом коде; вместо этого используйте dict, keyset и ve c.
В начале жизни Хака библиотека предоставляла непостоянные и неизменные типы классов generi c, называемые: Vector, ImmVector, Map, ImmMap, Set и ImmSet. Однако их заменили ve c, dict и keyset, использование которых рекомендуется во всем новом коде. Каждый тип generi c имел соответствующую буквальную форму. Например, переменная типа Vector может быть инициализирована с использованием Vector {22, 33, $ v}, где $ v - это переменная типа int.
Интересно, почему это изменение было сделано. Я имею в виду, одна из слабостей PHP в том, что у нее плохая oop стандартная библиотека. Например: str_replace
и array_values
методы находятся вне самого типа строка / массив. Стандартная библиотека PHP не согласована, иногда мы должны передавать массив в качестве первого параметра, а иногда в качестве второго ...
Я был рад видеть, что Hack ввел истинную инкапсуляцию OOP для коллекций .
Знаете ли вы, почему они отступили и написали служебные классы, такие как C\
, Dict\
, Keyset\
и Vec\
?
Будет ли в будущем добавление для добавления методов к встроенным в типах (например: Str\starts_with
=> "toto"->startsWith("t")
)?