【发布时间】:2016-10-22 14:35:07
【问题描述】:
在我的 ruby 项目中,我想创建一个任务管理器类,它会定期迭代一组已注册的函数。我需要将函数作为参数传递给寄存器函数,创建一个线程,当线程计时器触发时,它需要调用数组中的每个函数。
class TaskMan
@@func_array = Array.new
def self.register_func &arg_func
@@func_array.push arg_func
end
def self.run_server
loop do
@@func_array.each do |func|
func.call
end
sleep 60
end
end
end
class Callee
def self.func_0
puts "func_0 called."
end
def self.func_1
puts "func_1 called."
end
end
TaskMan.register_func Callee.func_0
TaskMan.register_func Callee.func_1
taskman_thread = Thread.new do
TaskMan.run_server
end
taskman_thread.join
基本上,这就是我想做的,但我不确定如何使用to_proc 和call 来推入函数并调用它们。
其他解决方案也值得赞赏,但我不想避免学习将函数作为参数传递,将它们放入数组并调用它们。
谢谢。
【问题讨论】:
-
Ruby 没有函数。您的问题不清楚。
标签: ruby