2012-03-08 50 views
0

我正在做某种递归,在那里计算数组的左右两侧。我有工作代码,但不知道这是否可以写得更简洁。这里是代码:构建数组的简洁性

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

回答

3

试试这个

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

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

2

这可以写成:

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

你可以内联leftright变量为好,但我认为它会使代码少意图揭示。

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

可以改写

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

你花费三个字符这种方式,但你会提前如果e是三个字符或更长。

相关问题