Разделение целочисленных значений в массив

Есть ли эквивалент метода String chars для fixnum? Пытаюсь разделить целочисленное значение по значению в массив, например, 1234 -> [1, 2, 3, 4], чтобы затем выполнить операции с отдельными значениями.

Или лучше сначала преобразовать в строку, выполнить операцию (пример x 2), а затем объединить как целые числа? Как ниже:

    def method_name num
      num.to_s.chars.map{|x| x.to_i*2}.join.to_i
    end

1 ответ

Там нет ничего, что разделяет число на отдельные цифры, так как это, как правило, бессмысленно делать с числом. Вы также можете сделать это математическим способом, но я не вижу явного преимущества в этом, учитывая требования (пока).

Я мог бы предпочесть разделить преобразование и умножение, например,

n.to_s.chars.map(&:to_i).map { |n| n * 2 }.join.to_i

Он немного более универсален, и, если, скажем, ваш множитель изменяется, его легко изменить (здесь не показано, но есть способы).

Другие вопросы по тегам