Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет kouzdra ([info]kouzdra)
@ 2011-11-30 12:09:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Вова Патрышев рекламирует Скалу - за паттерн-матчинг:
Вот тут:

В Скале же, на самом деле, не особ9о стесняются расписывать по классам, но на то есть другая причина: unapply, а ещё лучше сказать, линза (обратная сторона); с помощью её можно устраивать сравнение по образцу и, в зависимости от типа, выполнять какие-то действия с параметрами конструктора.
  message match {
    case CancelMessage(timeout: TimeInSeconds) => app.cancelato(timeout)
    case EncourageMessage(text: String) => galera.listen(text); galera.trabalha
    ...
  }


Тогда как в 45-летней давности в первом в истории ОО-языке это писалось так:
Current :- First;
While Current ne None do begin
  Inspect Current
    When A do Show    ! Show of A;
    When B do Show    ! Show of B;
    When C do Show    ! Show of C;
    Otherwise OutText("Not a (sub)class of A");
  OutImage;
  Current :- Current.Link
End While;


(Читать комментарии) - (Добавить комментарий)


[info]kouzdra
2011-12-01 14:54 (ссылка)
Потому что это Simula-67 (кою в более поздних традициях следовало бы назвать Object Algol-60)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ketmar
2011-12-01 16:46 (ссылка)
пардон, но это первый объектный костыль. а первый объектный язык — это Smalltalk.

(Ответить) (Уровень выше)


(Читать комментарии) -