Как импортировать внутренние классы без зависимости пути в Scala?

TL&DR: Возможно ли ( локально?) Отключить зависящую от пути типизацию? Я бы хотел выпустить один оператор импорта, аналогичный import x ._ , но чтобы C ссылался на X # C , а не xC ( X является типом x )?

У меня есть несколько типов:

class Button[M] { ... }
class Label[M] { ... }
...

И я случайно использовать их вместе, передавая им один и тот же аргумент типа:

class UseSite[M] (
   btn1 : Button[M]
 , btn2 : Button[M]
 , lbl1 : Label[M]) {
  ...
}

Я подумал, что было бы неплохо упаковать все эти типы так, чтобы мне нужно было передать параметр типа только один раз:

class Swing[M] {
  class Button { ... }
  class Label { ...}
}

Затем на сайте использования Я хотел бы иметь возможность сделать это:

class WithSwing[M] {
  val swing = new Swing[M]
  import swing._
  class UseSite(
     btn1 : Button
   , btn2 : Button
   , lbl1 : Label) {
    ...
  }
}

Однако это не работает должным образом из-за типизации, зависящей от пути: Кнопка ссылается на swing.Button вместо ] Swing [M] #Button , поэтому внешнему коду очень трудно передавать правильные аргументы. в конструктор UseSite .

Есть ли удобный способ заставить Button ссылаться на Swing [M] #Button , а не на swing.Button ?

5
задан Rotsor 23 January 2012 в 00:56
поделиться