Почему методам set Ruby нужно “сам”. квалификация в классе?

В CentOS 7 и Python 3.4 команда sudo yum install python34-tkinter

В Redhat 7.4 с Python 3.6 команда sudo yum install rh-python36-python-tkinter

70
задан Kev 2 September 2012 в 23:53
поделиться

2 ответа

Важная вещь помнить вот состоит в том, что методы Ruby могут быть (ООН), определенная в любой точке, таким образом, для интеллектуального разрешения неоднозначности каждое присвоение должно будет выполнить код, чтобы проверить, существует ли метод с присвоенным - для именования во время присвоения.

18
ответ дан ben 24 November 2019 в 13:27
поделиться

Ну, я думаю, что причина дело обстоит так состоит в том, потому что qwerty = 4 ambiguous—, Вы определяете новую переменную, названную qwerty, или называете метод set? Ruby разрешает эту неоднозначность путем высказывания, что это создаст новую переменную, таким образом эти self. требуется.

Вот другой случай, где Вам нужно self.:

class A
  def test
    4
  end
  def use_variable
    test = 5
    test
  end
  def use_method
    test = 5
    self.test
  end
end
a = A.new
a.use_variable # returns 5
a.use_method   # returns 4

, Как Вы видите, доступ к test неоднозначен, таким образом, эти self. требуется.

кроме того, это - то, почему примером C# является на самом деле не хорошее сравнение, потому что Вы определяете переменные способом, который однозначен от использования метода set. Если Вы определили переменную в C#, который был тем же именем как средство доступа, необходимо будет квалифицировать вызовы к средству доступа с this., точно так же, как случай Ruby.

83
ответ дан Andrew Marshall 24 November 2019 в 13:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: