Я - разработчик Автора Возвращения и некоторые проблемы, которые Вы упомянули, были зафиксированы в бете версии 2. Можно загрузить это от offcial веб-сайта с примером приложения также.
- Требует автозагрузки (препятствующий производительности)
- Использование по сути небезопасное понятие 'вопросов о безопасности'. Dealbreaker!
вопросы о безопасности теперь не используются, и более простая система забытого пароля была помещена на месте.
- типы Возврата являются чем-то вроде мешанины истинных, ложных, ошибки и кодов успеха
, Это было зафиксировано в версии 2 и возвращает булевы значения. Я ненавидел мешанину так же как Вы.
- не сцепляется в систему проверки CI
, пример приложения использует систему проверки CI.
- не позволяет пользователю снова посылать код 'потерянного пароля'
происходящая Работа
, я также реализовал некоторые другие опции, такие как почтовые представления, это дает Вам выбор способности использовать помощников CodeIgniter в Ваших электронных письмах.
Это - все еще происходящая работа поэтому, если больше имеют предложения, сохраните их прибытием.
- Попкорн
пз: Спасибо за рекомендацию Возвращения.
Одна вещь, которую вы могли бы сделать, - это создать временную переменную, в которой будет храниться значение, которое только что было поставлено в очередь, потому что это будет последнее значение, и поэтому переменная может быть доступна для получения этого значения.
Мне кажется, если вам нужен быстрый доступ к первому элементу в списке, значит, вы используете неправильную структуру данных. Вместо этого переключите LinkedList, который для удобства имеет свойства First и Last.
Убедитесь, что вы только добавляете и удаляете элементы в связанный список с помощью AddLast и RemoveFirst для сохранения свойства Queue. Чтобы не допустить непреднамеренного нарушения свойства Queue, рассмотрите возможность создания класса-оболочки вокруг связанного списка и предоставления только необходимых вам свойств из вашей очереди.
public class LastQ<T> : Queue<T>
{
public T Last { get; private set; }
public new void Enqueue(T item)
{
Last = item;
base.Enqueue(item);
}
}
Редактировать: Очевидно, этот базовый класс должен быть более устойчивым, чтобы выполнять такие действия, как защита свойства Last в пустой очереди. Но этого должно хватить для основной идеи.
Лучше всего отслеживать последнее значение, добавленное в Очередь
, а затем использовать функцию myQueue.Peek ()
, чтобы увидеть «первый» (то есть следующий) элемент в списке, не удаляя его.
Вы могли использовать двухстороннюю очередь ( d ouble- e nded очередь ).
Я не думаю, что он встроен в System.Collections (.Generic), но вот некоторая информация о структуре данных. Если вы реализовали что-то подобное, вы могли бы просто использовать PeekLeft () и PeekRight () для получения первого и последнего значений.
Конечно, вам решать, будет ли реализация вашей собственной двухсторонней очереди предпочтительнее иметь дело с бесполезность ToArray (). :)