访问模块中包含的 ruby 方法的符号
Accessing ruby method's symbol contained in a module
给定 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"
A::a
是一种方法,所以你可以简单地做:
m = A.method :a
m.call # returns "a"
是的,您可以使用 send
:
A.send :a #=> "a"
或
A.send "a" #=> "a"
给定 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"
A::a
是一种方法,所以你可以简单地做:
m = A.method :a
m.call # returns "a"
是的,您可以使用 send
:
A.send :a #=> "a"
或
A.send "a" #=> "a"