TL & DR: ¿Es posible (localmente) deshabilitar la escritura dependiente de la ruta? Me gustaría emitir una sola declaración de importación similar a import x._
, pero para hacer C
consulte X#C
en lugar de x.C
(X
siendo el tipo de x
)?¿Cómo importar clases internas sin dependencia de ruta en Scala?
Tengo un montón de tipos:
class Button[M] { ... }
class Label[M] { ... }
...
Y resulta que usarlas juntas pasar el mismo tipo de argumento a todos ellos:
class UseSite[M] (
btn1 : Button[M]
, btn2 : Button[M]
, lbl1 : Label[M]) {
...
}
pensé que sería bueno para empaquetar todos esos tipos de modo que sólo tengo que pasar el parámetro de tipo de una vez:
class Swing[M] {
class Button { ... }
class Label { ...}
}
Luego, en el lugar de uso I 'D como para ser capaz de hacer esto:
class WithSwing[M] {
val swing = new Swing[M]
import swing._
class UseSite(
btn1 : Button
, btn2 : Button
, lbl1 : Label) {
...
}
}
Sin embargo, esto no funciona correctamente debido a la tipificación dependiente de la trayectoria: Button
se refiere a swing.Button
en lugar de Swing[M]#Button
por lo que el código externo tiene un tiempo muy difícil pasar la correcta argumentos al constructor UseSite
.
¿Hay una manera agradable de hacer Button
referirse a Swing[M]#Button
en lugar de a swing.Button
?
¿Cambiará el nombre de "val swing" a algo más (para eliminar la ambigüedad de importación)? – Rogach
¿Por qué no evitar este problema al poner las clases dentro de un objeto en lugar de otra clase? –
Daniel, porque los objetos no pueden tener parámetros. – Rotsor