我正在做某种递归,在那里计算数组的左右两侧。我有工作代码,但不知道这是否可以写得更简洁。这里是代码:构建数组的简洁性
left = calculate(x[0])
right = calculate(x[1])
a = Array.new(0)
a << left
a << right
self(a)
我正在做某种递归,在那里计算数组的左右两侧。我有工作代码,但不知道这是否可以写得更简洁。这里是代码:构建数组的简洁性
left = calculate(x[0])
right = calculate(x[1])
a = Array.new(0)
a << left
a << right
self(a)
试试这个
self(x[0..1].map{|e| calculate(e)})
如果x只有两个元素,你可以省略[0..1]
。
这可以写成:
left = calculate(x[0])
right = calculate(x[1])
self([left, right])
你可以内联left
和right
变量为好,但我认为它会使代码少意图揭示。
self(x[0..1].map{|e| calculate(e)})
可以改写
self(x[0..1].map(&method(:calculate)))
你花费三个字符这种方式,但你会提前如果e
是三个字符或更长。