В будущем развитии
языка, наличие типов список и кортеж
значительно повысило бы его эффективность.
Сейчас роль списка играет индексированный
массив, где в качестве индекса используются
числа. Есть семейство функций array_ и ряд
других, прозрачно работающее с массивами
с числовой индексацией. Можно закрыть
глаза на наличие числовых индексов и
тогда массив превращается в список. Это
создает избыточность и двусмысленность.
Особенно это проявляется в операциях
по слиянию массивов. Тут выбор невелик:
array_merge. В случае пары массивов и более
с уникальными ассоциативными ключами,
возможна арифметическая операция
сложения массивов. Это очень неудобно.
Для того, чтобы целенаправленно сложить
два массива [1, 2, 3] + [1, 2, 4, 3] == [1, 2, 3, 1, 2, 4,
3] нужно выполнить ряд нетривиальных
манипуляций. Введение типа «список»
решило бы эти проблемы. Тоже самое
относится к кортежам. Данные типы можно
было-бы обозначать так: prefix[1, 2, 3] где
prefix=!@$... или так: {1, 2, 3} {{1, 2, 3}} :1, 2, 3: или
так: [@ 1, 2, 3] или как в лиспе: (`1 2 3). Еще
варианты: [=12,3,4], :[1, 2, 3], @$[1, 2, 3], [1, 2, 3]\\list
\\list[1, 2, 3]
Ну в общем это тема для
отдельной дискуссии.
В настоящий момент
частичное решение этой проблемы возможно
лишь через SplFixedArray. Данное нововведение,
позволило бы упростить ряд операций и
реализовать планируемые генераторы
более гибкими. А также создать фундамент
для реализации в PHP паттерн-матчинга.
Комментариев нет:
Отправить комментарий