Ruby on rails 3 Rails 3中调用方法的语法

Ruby on rails 3 Rails 3中调用方法的语法,ruby-on-rails-3,methods,Ruby On Rails 3,Methods,我来自PHP背景,习惯于使用$this->methodName()调用类的内部方法,但我似乎找不到在Rails中执行相同操作的语法。我想在控制器中执行以下操作: class Foo def bar #call self.baz end def baz #some code end end 方法调用的正确语法是什么?另外,如果有一个学习Ruby/Rails基本语法的好地方,请分享。我发现仅仅是试图找到简单的语法功能就令人沮丧。简单地使用baz或self.baz

我来自PHP背景,习惯于使用$this->methodName()调用类的内部方法,但我似乎找不到在Rails中执行相同操作的语法。我想在控制器中执行以下操作:

class Foo

  def bar
   #call self.baz
  end

  def baz
    #some code
  end

end

方法调用的正确语法是什么?另外,如果有一个学习Ruby/Rails基本语法的好地方,请分享。我发现仅仅是试图找到简单的语法功能就令人沮丧。

简单地使用
baz
self.baz
self
相当于PHP中的
$this

Ruby的语法非常简单-只需在对象上调用
。方法\u name

foo = Foo.new
foo.bar # calls bar on foo
在方法定义中,
self
(Rubyists称之为“接收者”)是隐式的,因此只需使用方法名称:

def bar
  baz # calls Foo#baz
end
您还可以显式地使用
self
执行相同的操作:

def bar
  self.baz # also calls Foo#baz
end

可以找到Ruby语法的详细介绍。

我什么时候使用baz和self.baz?有区别吗?没有。但是如果您通过定义名为
baz
的局部变量来覆盖
baz
,那么您总是可以使用
self.baz
调用类方法
baz
。还有一些程序员更喜欢用这种方式来显式显示它是类方法。@Hauleth:
self.baz
在这种情况下不引用类方法<实例中的code>self方法指实例<类方法中的code>self指的是单例类。例如,类主体中的
def self.method\u name
创建了一个类方法,因为
self
引用了单例——在本例中,它相当于
def Foo.method\u name
。另外,我在某个地方读到Ruby使用局部变量进行了一些缓存,所以
baz
应该比
self.baz
快一点。但是我没有检查,所以如果有人有关于这个主题的更完整的信息,请更正/确认。