Pull to refresh
51
0
Александр Токарев @alextokarev

Big Data Solutions Architect

Send message
Прошу прощения, | — это объединение типов. Оно и имелось ввиду и в исходном комментарии, и в моём ответе.
  1. Нет. Это как раз задача для применения классического полиморфизма. Пересечение типов нужно скорее для того, чтобы например ограничить диапазон принимаемых типов в аргументе функции для классов, которые не имеют общего супертипа.
  2. 42 в выражении A(42) является параметром конструктора. Запись
    def f(x: A(42)) = ... 
    является некорректной, так как типом может являться только A. Для параметризации типов используются квадратные скобки. Подробнее тему параметризации типов я раскрыл в разделе про лямбда выражения для типов.
  3. Можно, если trait A и константа a определены в одной области видимости, например так:
    
    object Test {
      val a: Int = 42
      trait A(val i: Int)
      class C extends A(a)
    }
    

    Если же trait A(i: Int) определен где-то в другом месте — то нет.

По сути, объединение типов так или иначе уже было где-то рядом, например тип Either, или Coproduct из shapeless. Теперь же они будут поддерживаться из коробки, и, в качестве бонуса, их сделали ближайшим супертипом)
Тут уж смотря с какой стороны посмотреть. Мне кажется, что у архитекторов «Scala»  вызывает ассоциации с лестничными пролетами, а у ценителей оперы — со всемирно известным театром в Милане.
2

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity