鉴于Ruby 2.2
module A
def self.a
"a"
end
end
如何访问A.a
以便我可以分配给变量并稍后调用它?
我尝试过以下方法:
x = A::a.to_sym
send x # NoMethodError: undefined method `a' for main:Object
以下作品:
x = -> { A.a }
x.call
既然我在数组中都有命名空间函数和非命名空间函数,那么我可以用send
做到这一点吗?
我真的不想用include A
污染命名空间
您可以使用#call
方法获取可调用对象(即,像proc一样支持method
的对象):
a = A.method(:a)
a.call # Or a[] or a.() as you prefer.
# "a"
A::a
是一种方法,所以你可以简单地做:
m = A.method :a
m.call # returns "a"
是的,你可以使用send
:
A.send :a #=> "a"
要么
A.send "a" #=> "a"