У меня недостаточно мощности для добавления этого комментария, поэтому я должен добавить его в качестве ответа. Также это слишком долго для комментария.
Что касается основного вопроса, я согласен, что типы входных параметров со значениями по умолчанию могут быть выведены. Я выполнил следующий запрос на их трекере проблем с Scala и не нашел подходящего запроса. Так что, возможно, вы могли бы подать один там.
project = SI AND (сводка ~ "по умолчанию" И сводка ~ "значение")
- без комментариев
- без комментариев
- Как уже отмечали другие, реификация (то есть не стирание типов) затрудняет реализацию генериков с более высоким родом. Вот прямая цитата из раздела 6.1 «Генерики высшего сорта», Писсенс, Мурс, Одерский.
Поскольку Scala использует стирание типов в бэк-энде, степень
Изменения ограничены проверкой типов. Понятно, что наше расширение таким образом
не влияет на характеристики программы во время выполнения.
По иронии судьбы, поскольку стирание типов является корнем других ограничений в
Scala, это было важное преимущество в реализации конструктора типов
полиморфизм.
Аналогичные расширения в языках, предназначенных для платформы .NET,
более сложная задача, поскольку виртуальная машина имеет более богатое представление о типах
и, таким образом, обеспечивает более строгие инварианты. К сожалению, модель
типы не включают типы с более высоким родом. Таким образом, для обеспечения полного
совместимость с универсальностью в других языках на этой платформе,
компиляторы для языков с полиморфизмом конструктора типов должны прибегать
частичное удаление, а также специализация кода для того, чтобы
построить необходимые представления типов, которые являются результатом
конструкторы абстрактных типов, применяемые к аргументам.
Вы можете просмотреть эту статью для объяснения того, почему дженерики с более высоким родом важны. Хотя Scala 2.8, по-видимому, не использует их широко в своей новой библиотеке коллекций, до сих пор я нахожу , невозможно реализовать мою библиотеку теории категорий подтипным элегантным способом без более высоких видов (в отличие от подтип дизайна, который я считаю чрезвычайно сложным).
Daniel C. Sobral относительно вашего комментария под вашим ответом, я думаю, что это принцип D в SOLID, который нарушается конструкторами. Городские Vagabon, фабрики должны быть использованы для достижения инверсии контроля, a / k / a Голливудский принцип. См. Также блог Гилада Брачи «Конструкторы считаются вредными».
Предполагается, что это не самый полный или лучший ответ, а некоторые частичные мысли, которые могут добавить к этой базе знаний.