【发布时间】:2020-03-30 08:45:34
【问题描述】:
我无意中在 Ruby 的Postgresql gem 中看到了这段代码:
### Convenience alias for PG::Connection.new.
def self::connect( *args )
return PG::Connection.new( *args )
end
我玩了一下,发现这个东西就像一个普通的模块类方法一样使用(它被称为:PG.connect)。事实上,我们可以改为使用def self.connect ( #args ) ... end,它的工作原理是一样的。
由于self::whatever 对我来说是第一个,我想知道self 命名空间在这种情况下到底是什么,在这种情况下它的真正目的是什么。任何人都可以帮助阐明这一点吗?
【问题讨论】:
-
相当于
def self.connect。 -
当您将代码放入类/模块定义中时,它就像任何其他 Ruby 代码一样运行。唯一真正的区别是自我的价值。正如您在下面看到的, self 指向正在定义的类或模块。 class Ghost self == Ghost # => true end module Mummy self == Mummy # => true end
标签: ruby-on-rails ruby postgresql pg