Что на самом деле происходит при указании «частный» / «защищенный» в Ruby?

Что на самом деле происходит, когда в определении класса Ruby указано private / protected ? Они не являются ключевыми словами , поэтому это означает, что они должны быть вызовами методов, но я не могу найти, где они определены. Они не задокументированы. По-разному ли реализованы два разных способа объявления частных / защищенных методов (показанных ниже)? (Второй способ - это, очевидно, вызов метода, но в первом случае это не так очевидно.)

class Foo
  private
  def i_am_private; end
  def so_am_i; end
end

class Foo
  def i_am_private; end
  def so_am_i; end
  private :i_am_private, :so_am_i
end

6
задан Andrew Grimm 27 March 2012 в 23:05
поделиться