根据我对self
的理解,它指的是类的当前实例。
无论如何,这不是所有时间的默认行为吗?例如,不是
self.var_one = method(args)
等同于
var_one = method(args)
如果是,那么self
有什么用呢
发布于 2011-07-13 02:59:44
在大多数情况下,self.foo
确实是多余的,因为您可以只编写foo
来达到相同的效果,但在这种情况下,它不是多余的,并且需要self
。
var_one = method(args)
将创建一个名为var_one
的局部变量,它不会调用任何方法,也不会对self
做任何其他事情。
self.var_one = method(args)
将使用参数method(args)
在self
上调用方法var_one=
。
另一种情况下,self
的使用是非可选的,如果你想将它作为参数传递给一个方法,即some_method(self)
-如果没有self
关键字,你就不能这样做。
发布于 2011-07-13 03:14:52
下面是一个例子:
def run miles
self.miles = miles
end
在这种情况下,self
将提供帮助。在大多数情况下,self
是冗余的。
发布于 2011-07-13 04:11:01
self
的另一个用途是声明类方法(类似于Java语言中的静态方法)。
class foo
def self.bar
#do class related stuff here
end
end
也就是说,您也可以使用def foo.bar
代替方法签名。
https://stackoverflow.com/questions/6669527
复制相似问题