Краткость в построении массива - PullRequest
0 голосов
/ 08 марта 2012

Я делаю какую-то рекурсию, где вычисляю левую и правую части массива. У меня есть рабочий код, но интересно, если бы это можно было написать более кратко. Вот код:

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

Ответы [ 3 ]

3 голосов
/ 08 марта 2012

Попробуйте это

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

Если x имеет только два элемента, вы можете опустить [0..1].

2 голосов
/ 08 марта 2012

Это может быть записано как:

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

Вы также можете встроить переменные left и right, но я думаю, что это сделает код менее наглядным.

1 голос
/ 09 марта 2012
self(x[0..1].map{|e| calculate(e)})

можно переписать

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

Таким образом вы потратите еще три символа, но вы были бы впереди, если бы e был длиной в три символа или более.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...