繁体   English   中英

如何在Ruby on Rails中使用Procs?

[英]How would I use Procs in Ruby on Rails?

我在项目中使用了一些帮助程序,我只是认为我可以将其视为Procs,因为它们执行非常具体的任务并且可以由非常不同的组件使用。

我已经在小型Ruby项目中使用了Procs,主要是在学习语言时,我认为这是使用它们的好时机。

我的问题是,将Procs放在Rails文件夹结构中的什么位置? 有任何准则或建议吗? 它被认为是好的做法吗?

与使用简单方法相比,使用Procs会有什么好处让我有些疑惑? 因此,如果您可以举一些例子,那就太好了。

无论如何:由于Procs可以存储在变量中,因此我将在lib文件夹中声明一个模块,并将proc定义为返回proc的变量,常量或方法。 像这样

module ProcContainer

  def proc_1(factor)
    Proc.new { |n| n*factor }
  end

  PROC_2 = Proc.new { |n| 2 * n }

end

用作

gen_proc = ProcContainer.proc_1(6)
result = gen_proc(3)

other_proc = ProcContainer.PROC_2(4)

我猜该方法的优点很明显,因为每次调用它都会返回一个新的Proc对象,而常数只被评估一次。

(当然,您应该将命名更改为更合适的名称)

Ruby具有惊人的块语法,因此我们倾向于青睐它们而不是显式进行proc。 块的缺点是,当被调用的方法屈服时,它们需要立即执行(过程没有此限制)。 出于性能方面的考虑,这样做是适当的,但是您可以轻松地将一个程序块打包为proc,然后将其存储在其他位置以供以后使用,或者将其传递给其他方法。 因此,即使您可能每天都在使用proc,也并没有真正意识到这一点,因为与它们的接口是通过块语法实现的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM