Я хотел бы сделать что-то вроде этого (например, упрощена, но содержит все важные части):Puzzle - разоблачение публичного суб-члена частного члена с пользовательского типа
class Master
{
type DataType = Int
var counter : DataType = 0
}
class Slave(private val master : Master)
{
val counter = master.counter // (*)
}
И здесь (*) Я получаю сообщение об ошибке:
private value master escapes its defining scope as part of type Slave.this.master.DataType
val counter = master.counter
Я понимаю ошибку, но я не понимаю причины - тип является частью класса Master
, а не объект master
, поэтому очень важно, если класс является частным, а не объект. Ну, по крайней мере теоретически.
Это легко сделать быстрый обходной путь:
val counter : Master#DataType = master.counter
Но я считаю, что это явная версия точно тот же код, как и раньше, это «только» занимает больше печатать. Это функция?
ВОПРОС:
Может типа (здесь DataType) зависит от объекта, а не класс (т.е. определение типа на экземпляр класса) в Scala?
Спасибо, поэтому, если я это правильно понял (однако я не читал его в «Программирование в Scala», я верю - или, может быть, он поскользнулся), вы можете определить тип для экземпляра класса не только для каждого класса , – greenoldman
Благодарим за обновление, это очень ценно, к сожалению, я не могу продвигать ваше сообщение более 1 :-) – greenoldman
Это одна из тех полезных вещей в Scala, которая может быть «полученной» при выходе с других языков ООП. Очень краткий ответ; стоит моего upvote;). – TechNeilogy