Вот эффективное однопроходное решение:
ranges
.map(r => r -> nums.count(n => n >= r._1 && n <= r._2))
.toMap
Это позволяет избежать затрат на создание списка чисел, а затем объединить их с диапазонами на отдельном шаге.
Это версия, в которой используется больше функций Scala, но она слишком причудлива:
(for {
r <- ranges
range = r._1 to r._2
} yield r -> nums.count(range.contains)
).toMap
Это также менее эффективно, поскольку contains
должен учитывать диапазоны со значением шага и, следовательно, более сложным.
А вот еще более эффективная версия, позволяющая избежать любых временных структур данных:
val result: Map[(Int, Int), Int] =
ranges.map(r => r -> nums.count(n => n >= r._1 && n <= r._2))(collection.breakOut)
См. это объяснение breakOut
, если вы не знакомы с ним , Использование breakOut
означает, что вызов map
будет создавать Map
напрямую, а не создавать List
, который должен быть преобразован в Map
с использованием toMap
.
JQuery UI имеет хорошее calendar/datepicker стоящее смотреть на. И больше всего его СВОБОДНОЕ!щелкните здесь
Поскольку действительно исчерпывающий набор связанных с датой компонентов проверяет материал Peters Blums по http://www.peterblum.com/DES/DateAndTime.aspx, мы использовали их в течение многих лет
Я использую Календарь из AJAX.NET с некоторыми пользовательскими тонкими настройками (например, к правильно времени обработки) и управление RadCalendar Telerik, которое является действительно хорошим (но не бесплатным).
Этот свободен, и я использовал его, прежде чем у меня была подписка Telerik или DevExpress.
http://www.basicdatepicker.com/bdplite
Также, если Вы используете jQuery там некоторые очень хорошо сделанные средства выбора даты.
у меня есть (помимо большого JQuery UI) две других опции:
Инструментарий Управления Ajax (из codeplex.com): большой, свободный, но никакая поддержка IE6 iFrame накладывают ошибку
Календарь oBout (http://www.obout.com/calendar/calendar_home.aspx): не свободный, но дескрипторы Ошибка IE6, и также имеет хороший режим "Airplane", где два Каландра сотрудничают (Запускаются/Дата окончания)
отношения Christoph
Календарь Ajax Ра является LGPL и Бесплатно использовать...
Мы использовали Yahoo! Календарь Библиотеки UI без жалоб.
Это не свободно, но Telerik DateTimePicker перешла хорошо с моей командой.