给定 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
污染命名空间
最佳答案
您可以使用 method
获取可调用对象(即支持 #call
的对象,就像 proc 一样)方法:
a = A.method(:a)
a.call # Or a[] or a.() as you prefer.
# "a"
关于ruby - 访问模块中包含的 ruby 方法的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38493732/