Ruby on rails 3 Rails 3中调用方法的语法
我来自PHP背景,习惯于使用$this->methodName()调用类的内部方法,但我似乎找不到在Rails中执行相同操作的语法。我想在控制器中执行以下操作: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
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
快一点。但是我没有检查,所以如果有人有关于这个主题的更完整的信息,请更正/确认。