我正在进行某种递归,我计算数组的左右两侧。我有工作代码,但想知道这是否可以更简洁地编写。这是代码:
left = calculate(x[0])
right = calculate(x[1])
a = Array.new(0)
a << left
a << right
self(a)
答案 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])
您也可以内联left
和right
变量,但我认为这会降低代码的意图。
答案 2 :(得分:1)
self(x[0..1].map{|e| calculate(e)})
可以改写
self(x[0..1].map(&method(:calculate)))
你用这种方式再花费三个字符,但如果e
长度为三个字符,你就会领先。