2010-04-21 3 views

ответ

20

This article - это дискуссия с Мартином Одерски (создателем Скалы) и включает компромиссы, которые были сделаны в Scala для совместимости с Java. В статье упоминается:

  1. Статическая перегрузка методов
  2. Наличие обоих признаков и классов
  3. включение null указателей.
+0

Отличная ссылка. +1 – VonC

26

Два наиболее важных компромиссов я знаю о являются:

  • type erasurereflecting on Type»): Он должен manage a Manifest обойти компиляции Java (независимо от виртуальной машины Java, для обеспечения обратной совместимости причине).
  • коллекция примитивного типа: например .: arrays

    новой схема обработки массивов в Scala 2.8. Вместо того, чтобы бокс/распаковка и другой магия компилятор схема опирается на неявных преобразованиях и манифестах для интеграции массивов

Таковы два основных ограничения виртуальной машины Java, когда дело доходит до управления общего типа (с границами): Java JVM не поддерживает точное использование типа в универсальном объекте и имеет «примитивные» типы.


Но вы могли бы также рассмотреть вопрос:

Для того, чтобы охватить как можно больше возможностей, насколько это возможно, Scala предоставляет:

  • Условный класс типы,
  • типы класса Value,
  • Nonnullable типы,
  • типы Монада,
  • Типы признаков,
  • Типы объектов Singleton (процедурные модули, служебные классы и т. Д.)
  • типа Compound,
  • Функциональных типов,
  • классов Case,
  • зависимых от пути типов,
  • Анонимных типов,
  • типов Самостоятельно,
  • Типа псевдонимы,
  • Generic типы,
  • Covariant generic types,
  • Cont ravariant общие типы,
  • Кольцевые общие типы,
  • Абстрактные типы,
  • экзистенциальные типы,
  • неявные типы,
  • дополненной типы,
  • Посмотреть ограниченные типы и
  • Структурные типы, которые позволяют форма утиного набора, когда все остальное не работает
+0

Примечание для себя: этот список типов рассматривается (со ссылками) в http://stackoverflow.com/questions/3112725/advantages-of-scalas-type-system/3113741#3113741 – VonC

3

Меньше проблемы со временем выполнения, чем культурное похмелье: универсальное равенство, хеширование, toString.

Более глубоко привязаны к ВМ: строгие оценки по умолчанию, нечистые функции, исключения.

+0

+1 для всеобщего равенства и хэширования. Что случилось с универсальной 'toString'? – missingfaktor

+0

1) Легко случайно отобразить 'Object # toString' пользователю. 2) 'Collection [A] # toString' является негибким в том, как он отображает элементы типа' A'. См. «Scalaz.Show» для альтернативы. – retronym

+0

Хорошо. Спасибо за ответ. – missingfaktor

 Смежные вопросы

  • Нет связанных вопросов^_^