Карта / словарь, ограничивающий размер записей в ActionScript 3 - PullRequest
2 голосов
/ 11 февраля 2011

В Java это можно сделать с помощью LinkedHashMap путем удаления самой старой записи / самой старой доступной записи. Любой эквивалентный класс в ActionScript 3?

Спасибо.

1 Ответ

1 голос
/ 11 февраля 2011

Нет, к сожалению, нет.Вы могли бы легко реализовать его, если бы я собирался его реализовать, я бы расширил прокси-объект . Это даст вам немножко гибкости.

ОБНОВЛЕНИЕ:

Это обновление разъясняет вопрос в комментарии ОП.Комментарий был «Это будет новый класс, расширяющий Прокси, а не Словарь / и т. Д.»

Да, вы хотите расширить Прокси, причина этого в том, что он позволяет вам переопределитьнесколько магических методов для достижения вашей цели.Особенно в вашем случае вы можете переопределить setProperty(name:*, value:*):void.Этот метод будет вызываться каждый раз, когда в вашем классе устанавливается свойство (вы должны предоставить реализацию набора), чтобы вы могли подсчитать количество значений, установленных в данный момент времени.Если вы расширяете объект или словарь, у вас нет доступа к нему, и вы знаете способ узнать, когда устанавливается новое свойство.

Если вы расширили объект вместо этого, вам нужно будет полагаться на интерфейс длядостичь своей цели, требуя, чтобы пользователь устанавливал свойства с помощью вызовов методов.

Реализация Proxy позволит вам по-прежнему устанавливать свойства следующим образом:

myObj.foo = 'bar';
myObj["foo"] = 'bar';

Реализация метода (расширение объекта) будет выглядеть такэто:

myObject.setVal("name", "val");
...