Подтвердить что ты не робот

Получить каждый индивидуальный номер из целого числа Fixnum Ruby on Rails

Это настоящий вопрос ультра новичков.

У меня есть возраст, хранящийся в базе данных.

Когда я получаю возраст из базы данных, я хочу получить каждую цифру.

Пример:

User.age = 25

Я хочу получить следующее:

first = 5
second = 2

Я не могу, по-видимому, бороться с данными как с их номером исправления.

Кто-нибудь знает чистое и простое решение.

4b9b3361

Ответ 1

Вы можете преобразовать в строку и затем разбить на цифры, например.

first, second = User.age.to_s.split('')
=> ["2", "5"]

Если вам нужны отдельные цифры обратно как Fixnums, вы можете их отобразить, например.

first, second = User.age.to_s.split('').map { |digit| digit.to_i }
=> [2, 5]

В качестве альтернативы вы можете использовать целочисленное деление, например.

first, second = User.age.div(10), User.age % 10
=> [2, 5]

Обратите внимание, что приведенные выше примеры используют параллельное назначение, которые вы, возможно, еще не встретили, если вы новичок в Ruby.

Ответ 2

first, last = User.age.divmod(10)

Ответ 4

Ознакомьтесь с эталонами для множества решений здесь: http://gistflow.com/posts/873-integer-to-array-of-digits-with-ruby Лучше всего использовать divmod в цикле:

def digits(base)
  digits = []

  while base != 0 do
    base, last_digit = base.divmod(10)
    digits << last_digit
  end

  digits.reverse
end

Ответ 5

Ruby 2.4 имеет метод Integer # digit. например:

25.digits
# => [5, 2]

Итак, вы можете сделать

first, second = user.age.digits

Ответ 6

Не лучшее решение, но только для коллекции:

User.age.chars.to_a.map(&:to_i)
#=> [5, 2]
first, second = User.age.chars.to_a.map(&:to_i)