我和阵列玩和哈希相当多的红宝石和一些代码,看起来像这样结束:

sum = two_dimensional_array.select{|i|
  i.collect{|j|
    j.to_i
  }.sum > 5
}.collect{|i|
  i.collect{|j|
    j ** 2
  }.average
}.sum

(让我们都假装的是,上述代码示例有意义现在...)

但问题是,即使TextMate的(我选择的编辑器),很容易拿起简单{...}do...end块,它不能找出(这是可以理解的,因为即使我不能找到一个“正确”的方式来折上面的),其中上述块的开始和结束折叠它们。

你如何折叠上面的代码示例

PS:考虑到它可具有2层折叠,我只关心外连续的一(与第i块)

有帮助吗?

解决方案

说实话,这东西令人费解可能是混乱的TextMate不亚于其他人谁必须保持它,这包括你的未来。

每当你看到的东西,卷起成一个单一的值,它是使用可枚举#注入一个很好的例子。

sum = two_dimensional_array.inject(0) do |sum, row|
  # Convert row to Fixnum equivalent
  row_i = row.collect { |i| i.to_i }

  if (row_i.sum > 5)
    sum += row_i.collect { |i| i ** 2 }.average
  end

  sum # Carry through to next inject call
end

什么是你的榜样奇怪的是你正在使用选择返回全阵列,涉嫌使用to_i转换,但实际上可枚举#选择确实没有这样的事,而是拒绝任何针对该函数返回零。我假定不关你的价值观。

而且取决于你的。平均方法是如何实现的,则可能需要的种子与0.0而不是0喷出呼叫使用一个浮点值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top