模块属性存储过程?

时间:2015-08-21 03:06:15

标签: ruby lambda

我实际上是在尝试这样做

module Foo
  @@do_something = Proc.new { puts "something" }
end

Foo::do_something.()

属性需要是procs / lambdas,以便它们可以作为参数传递给另一个proc / lambda /方法:

def other_method(do_something)
  do_something.()
end

other_method(Foo::do_something)

目前正在运作:

module Foo
  DO_SOMETHING = Proc.new { puts "something" }
end

Foo::DO_SOMETHING.()

但是我猜这不会通过代码审查。这是唯一的方法吗?

1 个答案:

答案 0 :(得分:0)

您只需为类变量创建一个访问器:

module Foo
  def self.do_something
    @@do_something  
  end
  @@do_something = Proc.new { puts "something" }
end

Foo::do_something.()
something

或以下任何一项:

Foo::do_something[]
Foo::do_something.call
Foo::do_something.yield