Я должен не согласиться с Easy Angel ... Scala-объектам не нужны классы (у них все еще есть тип ... но это не одно и то же). Отлично написано
val martin = new {
val name = "Martin"
val surname = "Ring"
def age = Calendar.getInstance.get(Calendar.YEAR) - 1986
}
также благодаря структурной типизации вы можете написать функции для этих объектов:
def printPerson(person: { def name: String; def age: Int }) =
println("%s (%d)".format(person.name, person.age))
Вы можете позвонить printPerson(martin)
, и он напечатает Martin (25)
Так что вам не нужны классы или черты, если вы действительно этого хотите.
Однако программирование на основе прототипов все еще не поддерживается языком, так как (imho) невозможно клонировать и расширять объекты анонимным типом. Я думаю, вы могли бы написать функции, чтобы сделать это ... но они потребовали бы массивного использования отражения, и, следовательно, нет поддержки родного языка ..