Scala: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 166:
Аргументы класса становятся аргументами конструктора, когда мы создаем новый объект этого класса: <code>new Complex(23.4,56.7)</code>.
Этот класс содержит два метода <tt>re</tt> и <tt>im</tt>, дающих доступ к действительной и мнимой части числа. Тип возращаемого значения этих методов не задан явно. Он автоматически выводится компилятором, который смотрит на правую часть методов и решает, что тип обоих методов <code>double</code>.
==Case classes ==
Отличия сase classes от обычных:
*Вы можете использовать распознавание шаблонов по их имени **и** по аргументам конструктора (это очень важно). Обычный класс может быть распознан только по имени - any condition on its members have to be in the guard clause.
*Новые объекты сase class могут быть созданы без ключего слова <tt>new</tt>.
*Все аргументы конструктора доступны извне используя автоматически созданные одноименные функции доступа.
*Метод <tt>toString</tt> автоматически переопределяется так, чтобы печатать имя сase class и все его аргументы.
*Метод <tt>equals</tt> автоматически переопределяется так, чтобы сравнивать два объекта по аргументам конструктора.
Case class не может наследовать сase class. Тем не менее, сase class может быть абстрактным.