鉴于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
答案 0 :(得分:4)
您可以使用method
方法获取可调用对象(即支持#call
的对象,就像proc一样):
a = A.method(:a)
a.call # Or a[] or a.() as you prefer.
# "a"
答案 1 :(得分:2)
A::a
是一种方法,所以你可以这么做:
m = A.method :a
m.call # returns "a"
答案 2 :(得分:2)
是的,您可以使用send
:
A.send :a #=> "a"
或
A.send "a" #=> "a"