Я нашел для себя очень интересный факт. Например, я уже писал:Структурный тип
type A = { val st: Set[Any]
val start: Set[Any]
val Sigma : Set[Char]
def tr(f: (Tuple2[Any, Any])=>Boolean): Set[Any]
}
class Fon {
val st: Set[Any]
val start: Set[Any]
val Sigma : Set[Char]
def tr(f: (Tuple2[Any, Any])=>Boolean): Set[Any] = Set(out)
def out: String = "is just example"
}
val a: A = new Fon
a.tr(f(Tuple2('a',0)))
Но если я буду стараться зовите a.out - я получаю сообщение об ошибке, что тип А не существует «вне» Что происходит с этим, как это работает ? Спасибо.
Этот код является неправильным. По крайней мере, 'Set [out]' и 'Tuple ['a', 0]' неверны, потому что '[]' используется вместо '()'. Кроме того, это не имеет ничего общего со структурными типами - если вы делаете «val a: AnyRef = new Fon; a.out' он все равно будет жаловаться. –
Возможно, я что-то не понимаю, но могу ли вы сделать следующее: 'type A = {def out: String}; класс AA {def out: String = out2; def out2 = "out2"; val a: A = новый AA; a.out' - result 'String = out2' – dvigal
@lisasha В вашем примере отсутствует'} '. Я предполагаю, что после определения 'out2'. Во всяком случае, это вопрос или заявление? Если вопрос, то да. Если заявление, то я не понимаю, что вы пытаетесь сделать. Вы ожидали, что он потерпит неудачу? Если да, то почему? –