hum*_*der 28 ruby scope ruby-on-rails self
关于在模块或库中使用"SELF"的快速问题.基本上什么是"SELF"的范围/上下文,因为它与模块或库有关,如何正确使用?有关我正在讨论的示例,请查看安装了"restful_authentication"的"AuthenticatedSystem"模块.
注意:我知道'self'在其他语言中等同于'this'以及'self'如何在类/对象上操作,但是在模块/库的上下文中没有"自我".那么,在没有类的模块中,自我的上下文是什么?
Sar*_*Mei 47
在一个模块中:
当您self在实例方法中看到它时,它引用包含该模块的类的实例.
当您看到self实例方法的外部时,它指的是模块.
module Foo
def a
puts "a: I am a #{self.class.name}"
end
def Foo.b
puts "b: I am a #{self.class.name}"
end
def self.c
puts "c: I am a #{self.class.name}"
end
end
class Bar
include Foo
def try_it
a
Foo.b # Bar.b undefined
Foo.c # Bar.c undefined
end
end
Bar.new.try_it
#>> a: I am a Bar
#>> b: I am a Module
#>> c: I am a Module
Run Code Online (Sandbox Code Playgroud)