Да, многомерного в Ruby возможны массивы. Массивы могут содержать любое значение, так многомерный массив только массив, содержащий другие массивы:
banned_ips = [
["10.10.10.10", Date.new(2015, 1, 2), "reason"],
["20.20.20.20", Date.new(2014, 12, 28), "reason"],
["30.30.30.30", Date.new(2014, 12, 29), "reason"],
]
Лично хотя я бы не рекомендовал использовать многомерный массив для этой цели. Вместо этого создайте класс, который инкапсулирует информацию о запрещенном IP-адресе.
Простой пример:
class BannedIP
attr_reader :ip, :time, :reason
def initialize(ip, time:, reason: "N/A")
@ip = ip
@time = time
@reason = reason
end
end
banned_ips = [
BannedIP.new("10.10.10.10", time: Date.new(2015, 1, 2)),
BannedIP.new("20.20.20.20", time: Date.new(2014, 12, 28)),
BannedIP.new("30.30.30.30", time: Date.new(2014, 12, 29), reason: "Spam"),
]
Использование хешей. 'bannedips = [{ip:" 10.10.10.10 ", причина:" bla bla bla "и т. д.}, {...}]' Или если вы хотите быть супер фантазийными и объектно-ориентированными, BannedIP' и сохраните массив из них. – Adrian
@ Идея хэша @ Adrian выглядит хорошо. Что можно/следует использовать для получения отметки времени и причины для данного запрещенного IP-адреса? – John
Синтаксис выглядит как 'bannedips [0] [: ip]'. [Прочитайте документацию.] (Http://www.ruby-doc.org/core-2.1.5/Hash.html) – Adrian