构造数组的简洁性

时间:2012-03-08 09:46:57

标签: ruby arrays

我正在进行某种递归,我计算数组的左右两侧。我有工作代码,但想知道这是否可以更简洁地编写。这是代码:

left = calculate(x[0])
right = calculate(x[1])
a = Array.new(0)
a << left
a << right
self(a)

3 个答案:

答案 0 :(得分:3)

试试这个

self(x[0..1].map{|e| calculate(e)})

如果x只有两个元素,则可以省略[0..1]

答案 1 :(得分:2)

这可以写成:

left = calculate(x[0])
right = calculate(x[1])
self([left, right])

您也可以内联leftright变量,但我认为这会降低代码的意图。

答案 2 :(得分:1)

self(x[0..1].map{|e| calculate(e)})

可以改写

self(x[0..1].map(&method(:calculate)))

你用这种方式再花费三个字符,但如果e长度为三个字符,你就会领先。