Ruby что делает строка, содержащая только self и no .method?

#ruby #methods #return #self

#ruby #методы #Возврат #self

Вопрос:

Я пытаюсь понять этот код Ruby как студент C #, который никогда не программировал на Ruby. У меня есть хорошая идея о том, что делает большая часть этого, кроме строки с just self на ней. Я был бы благодарен за любую помощь в понимании. Мое лучшее предположение заключается в том, что self используется для вызова функции инициализации классов, но я не уверен на 100%.

 def link(cell, bidi=true)
  @links[cell] = true
  cell.link(self,false) if bidi
  self
end
  

Ответ №1:

Каждый метод что-то возвращает. Либо через явную return строку, либо, если нет явного возврата, возвращается последняя выполненная строка.

В вашем примере self приводит к тому, что метод возвращает объект, который является получателем для метода … обычно экземпляр класса, в котором был определен метод, хотя он может быть унаследован другими классами или может быть из включенного модуля (mixin).

Комментарии:

1. Большое вам спасибо. Итак, в это эквивалентно return this; в C #.

2. Я думаю, да. То, что я знаю о C #, могло бы поместиться в крошечный бумажный пакетик. Но если (например) Я видел, def Dog; def bark; puts "bow wow"; self; end; end тогда я ожидал, что dog = Dog.new; this_dog = dog.bark then this_dog и dog будут ссылаться на один и тот же объект Dog.