Ruby - 迭代并调用方法数组
Ruby - Iterating over and calling an array of methods
假设我有两种方法:
def hello
'hello'
end
def world
'world'
end
现在我想以这样的方式调用这些方法:
try_retry{
hello
}
try_retry{
world
}
假设 try_retry 是一种在发生错误时重试代码块的方法。有很多这样的方法,所以可以遍历块吗?类似于:
array_of_methods = [hello,world]
array_of_methods.each do |method|
try_retry{
method
}
end
问题是在这一行评估的方法:
array_of_methods = [hello,world]
你可以做到
array_of_methods = [method(:hello), method(:world)]
你可以这样称呼他们
array_of_methods.each { |m| m.call }
假设您有方法 hello
和 world
。如果你想在遍历它们的同时调用这些方法,你可以这样做
['hello', 'world'].each do |m|
send(m)
end
根据此方法名称数组的来源,您可能不希望调用私有或受保护的方法,因此 public_send
将仅允许调用 public 方法。
array_of_methods = ['hello', 'world']
array_of_methods.each {|m| public_send(m)}
假设我有两种方法:
def hello
'hello'
end
def world
'world'
end
现在我想以这样的方式调用这些方法:
try_retry{
hello
}
try_retry{
world
}
假设 try_retry 是一种在发生错误时重试代码块的方法。有很多这样的方法,所以可以遍历块吗?类似于:
array_of_methods = [hello,world]
array_of_methods.each do |method|
try_retry{
method
}
end
问题是在这一行评估的方法:
array_of_methods = [hello,world]
你可以做到
array_of_methods = [method(:hello), method(:world)]
你可以这样称呼他们
array_of_methods.each { |m| m.call }
假设您有方法 hello
和 world
。如果你想在遍历它们的同时调用这些方法,你可以这样做
['hello', 'world'].each do |m|
send(m)
end
根据此方法名称数组的来源,您可能不希望调用私有或受保护的方法,因此 public_send
将仅允许调用 public 方法。
array_of_methods = ['hello', 'world']
array_of_methods.each {|m| public_send(m)}