Поскольку переменные экземпляра всегда доступны через операцию доступа к полю при ссылке на какой-либо объект, то есть some_expression.instance_variable
. Даже если вы явно не обращаетесь к нему через точечную нотацию, например instance_variable
, она неявно рассматривается как this.instance_variable
(или если вы находитесь во внутреннем классе, обращаясь к переменной экземпляра внешнего класса, OuterClass.this.instance_variable
, которая находится под hood this.<hidden reference to outer this>.instance_variable
).
Таким образом, переменная экземпляра никогда не получает прямого доступа, и реальная «переменная», к которой вы напрямую обращаетесь, - this
(которая является «фактически окончательной», поскольку она не может быть назначена ) или переменная в начале некоторого другого выражения.