1

鉴于 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

4

3 回答 3

4

您可以使用以下方法获取可调用对象(即支持#call就像 proc 一样的对象)method

a = A.method(:a)
a.call # Or a[] or a.() as you prefer.
# "a"
于 2016-07-21T02:42:32.093 回答
2

A::a是一种方法,所以你可以简单地做:

m = A.method :a
m.call # returns "a"
于 2016-07-21T02:43:11.190 回答
2

是的,您可以使用send

A.send :a  #=> "a" 

或者

A.send "a" #=> "a" 
于 2016-07-21T04:52:36.247 回答