? Estoy intentando descubrir cómo crear un método que tome un objeto anidado como argumento. Para una clase anidada que pueda hacer lo siguiente:¿Cuál es el tipo de objeto anidado en scala
scala> class Outer {
| class Inner
| def method(i:Outer#Inner) = { "inner class" }
| }
defined class Outer
Sin embargo, si intento algo así con un objeto en lugar consigo un error:
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" }
¿Qué debe el tipo de argumento a la método para lograr esto? También quiero referirme al tipo de objeto Inner
no generalizar el argumento para decir Any
.
Esto no compila. –
Oups, también deberías usar esto, en lugar de Outer. Debo volver a leer la explicación sobre el tipo dependiente para explicarlo. – Nicolas
Sí, esto funciona! También para usar Inner en un método definido fuera de la clase Outer, puedo definir en Outer: 'type InnerType = this.Inner.type' Y luego puedo definir un método como:' def method (i: Outer # InnerType) = "foo" ' –