Я понимаю, что параметрические поля (например, x
в приведенном ниже примере) ведут себя как обычные поля; так что вы можете ссылаться на них в методах:Параметрические поля Scala и аргументы конструктора
class Test(val x: Int) { // x is a parametric field
override def toString = "Test: " + x;
}
Однако, если вы уронили ключевое слово val
, код по-прежнему компилируется (и смотреть и .class
выход, x
еще член класса). Поэтому мне интересно, в чем разница между параметрическими полями (т. Е. val x: Int
в приведенном выше) и аргументами конструктора (x: Int
)?
(с Java в задней части моей головы, я ожидал бы сферу конструктора как x
к не включают в себя метод, как toString
.)
Я считаю, 'x' все еще приходит член, если на него ссылаются хотя бы на 1 метод, независимо от того, предиффицирован ли он 'val' или нет. – adelbertc