关于理解块和基础的基本Ruby / Rails问题块变量

时间:2011-03-03 00:09:35

标签: ruby-on-rails block

我开始对Ruby / Rails感到满意,但是当我看到一个不熟悉的block时,我必须承认我仍然看起来很沮丧。请使用以下代码:

(5..10).reduce(0) do |sum, value|
  sum + value
end

知道它做了什么......但是,如何知道在Ruby中传递给块的参数的顺序?它们是按顺序排列的吗?你如何快速知道他们代表什么?

我假设必须查看源(或文档)以揭示正在产生的内容......但是有快捷方式吗?我想我想知道老兽医如何快速辨别出一个街区正在做什么?!?如何看待/解释块?

2 个答案:

答案 0 :(得分:2)

你必须在文档中查找它,直到你记住它为止。我仍然遇到reduce和其他几个人的问题。这就像试图记住普通方法的参数顺序一样。程序员必须在几乎所有语言中处理这个问题。

答案 1 :(得分:1)

当你编写代码时,除了检查文档之外别无他法 - 即使Ruby在这类事情上非常一致和连贯,所以通常你只是希望事情以特定方式工作。 另一方面,当您阅读代码时,您可以希望编码器已经足够聪明并且足够使用一致的变量名称。在你的例子中

(5..10).reduce(0) do |sum, value|
  sum + value
end

如果变量被称为sumvalue,则有一个原因! :-)像

这样的东西
(5..10).reduce(0) {|i,j|i+j}

当然是相同的,但可读性要低得多。所以这里的教训是:编写好的代码,你将传达一些信息而不仅仅是指令给计算机!