#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
thenthis_dog
иdog
будут ссылаться на один и тот же объект Dog.