TL & DR: È possibile (localmente?) Disabilitare la digitazione dipendente dal percorso? Vorrei rilasciare una singola dichiarazione di importazione simile a import x._
, ma per rendere C
fare riferimento a X#C
anziché a x.C
(X
è il tipo di x
)?Come importare classi interne senza dipendenza da percorso in Scala?
Ho un sacco di tipi:
class Button[M] { ... }
class Label[M] { ... }
...
E mi capita di usarli insieme passando lo stesso argomento di tipo a tutti loro:
class UseSite[M] (
btn1 : Button[M]
, btn2 : Button[M]
, lbl1 : Label[M]) {
...
}
ho pensato che sarebbe stato bello per confezionare tutti quei tipi in modo che ho solo bisogno di passare il parametro tipo di una volta:
class Swing[M] {
class Button { ... }
class Label { ...}
}
Poi sul sito uso I 'D piace essere in grado di fare questo:
class WithSwing[M] {
val swing = new Swing[M]
import swing._
class UseSite(
btn1 : Button
, btn2 : Button
, lbl1 : Label) {
...
}
}
Tuttavia, questo non funziona correttamente a causa di battitura dipendente dal percorso: Button
riferisce a swing.Button
anziché Swing[M]#Button
modo che il codice esterno ha un tempo molto duro che passa la corretta argomenti al costruttore UseSite
.
C'è un bel modo per fare riferimento a Button
Swing[M]#Button
piuttosto che swing.Button
?
Rinominare "val swing" in qualcos'altro (per eliminare l'ambiguità di importazione) funziona? – Rogach
Perché non evitare del tutto questo problema inserendo le classi in un oggetto anziché in un'altra classe? –
Daniel, perché gli oggetti non possono avere parametri. – Rotsor