Комментарии 5
Мне казалось что общепринятый тайпхинт это @var TypeOfElеment[]
или эти все слои абстракций наяриваются ради проверки типов, а я просто застрял в php5?
эти слои абстракций используются для сокрытия реализации коллекции. если код работает с интерфейсом, в любой момент можно написать другую реализацию, где элементы могут браться не из массива, а например из базы сразу.
при этом клиентскому коду будет все равно, т.к. он работает с чем-то, что реализует интерфейс Iterable, например
Хм. В моём понимании пользовательский класс коллекции — это класс описывающий набор однородных структур данных и позволяющий осуществить доступ к ним по средствам итерирования экземпляра класса. То есть, это класс в первую очередь реализующий интерфейс Iterator
или IteratorAggregate
.
Вы делаете акцент на инкапсуляции операций map/reduce и лишь в самом конце упоминаете итерирование. Каждая ли коллекция у вас является итератором? И если нет, то как вы осуществляете доступ к данным в коллекции?
Вообще, у нас похоже несколько разный подход к разработке. Я не часто работаю с обычными массивами, чаще с набором объектов. Я не припомню кейсов в которых мне нужно было бы фильтровать данные на клиенте. Обычно данные фильтруются на этапе извлечения их из хранилища. У нас коллекции чаще всего используется для потокового чтения или записи.
Правила работы с динамическими массивами и пользовательскими классами коллекций