关于Ruby中的method指针的问题

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

我想在Ruby中的数组中存储几种不同的method。假设我想存储type method两次:

[type, type]

不存储type数组中的两个条目; 它执行type两次,并将结果存储在数组中。我如何明确地引用方法对象本身?

提问于
用户回答回答于

如果你想存储一个方法,而不是调用一个方法的结果,或者只是发送调用它的消息,你需要method在拥有对象上使用该方法。举个例子

"hello".method(:+)

将返回对象“hello”的+方法,这样如果你用参数“world”调用它,你会得到“hello world”。

helloplus = "hello".method(:+)
helloplus.call " world" # => "hello world"
用户回答回答于

如果你正在考虑在Ruby中做方法引用,那么你做错了。

Ruby中有一个内置的方法method。它将返回该方法的proc版本。不过,这不是对原始方法的参考。每次打电话method都会创建一个新的proc。例如,更改方法不会影响proc。

def my_method
  puts "foo"
end

copy = method(:my_method)

# Redefining
def my_method
  puts "bar"
end

copy.call
# => foo

当你想存储代码片段,并且不想使用常规方法时,请使用procs。

stack = [proc { do_this }, proc { do_that }]
stack.each {|s| s.call }

扫码关注云+社区