me gustaría hacer algo como esto (ejemplo se simplifica, pero contiene todas las piezas cruciales):Puzzle - exposición de una sub-miembro público de miembro privado con el tipo de encargo
class Master
{
type DataType = Int
var counter : DataType = 0
}
class Slave(private val master : Master)
{
val counter = master.counter // (*)
}
Y aquí (*) me sale error:
private value master escapes its defining scope as part of type Slave.this.master.DataType
val counter = master.counter
entiendo el error, pero no entiendo la razón - el tipo es parte de la clase Master
, no el objeto master
, lo que es importante si la clase es privada, no es un objeto Bueno, al menos en teoría.
Es fácil hacer una solución rápida:
val counter : Master#DataType = master.counter
pero creo que esta es una versión explícita del mismo código exactamente como antes, que "sólo" lleva más de mecanografía. ¿Es esta una característica entonces?
PREGUNTA:
Puede un tipo (aquí DataType) ser dependiente del objeto, y no a la clase (es decir, definición de tipo por ejemplo de la clase) en Scala?
Gracias, por lo que si entiendo esto correctamente (sin embargo, no lo leí en "Programación en Scala", creo, o tal vez se deslizó), puede definir el tipo por instancia de la clase, no solo por clase . – greenoldman
Gracias por la actualización, esto es muy valioso, desafortunadamente no puedo dejar de votar su publicación más de 1 :-) – greenoldman
Esta es una de esas cosas útiles en Scala que puede ser un "error" cuando proviene de otros lenguajes OOP. Respuesta muy sucinta; vale la pena mi upvote;). – TechNeilogy