Sto cercando di capire come creare un metodo che accetta un oggetto nidificato come argomento. Per una classe annidata posso effettuare le seguenti operazioni:Qual è il tipo di oggetto nidificato in scala
scala> class Outer {
| class Inner
| def method(i:Outer#Inner) = { "inner class" }
| }
defined class Outer
Tuttavia, se cerco qualcosa di simile a un oggetto invece ottengo un errore:
scala> class Outer {
| object Inner
| def method(i:Outer#Inner) = { "inner object" }
| }
<console>:11: error: type Inner is not a member of Outer
def method(i:Outer#Inner) = { "inner object" }
cosa dovrebbe il tipo di argomento al il metodo è per realizzare questo? Voglio anche fare riferimento al tipo di oggetto Inner
non generalizzare l'argomento per dire Any
.
Questo non può essere compilato. –
Oups, lo userete anche al posto di Outer. Devo leggere di nuovo la spiegazione sul tipo dipendente per spiegarlo. – Nicolas
Sì, questo funziona! Anche per usare Inner in un metodo definito al di fuori della classe Outer posso definire in Outer: 'type InnerType = this.Inner.type' E quindi posso definire un metodo come:' def metodo (i: Outer # InnerType) = "foo" ' –