Невозможно проанализировать список типов оружия и патронов к массиву и отобразить результаты - PullRequest
0 голосов
/ 20 апреля 2019

Я изучаю Ruby и занимаюсь парсингом списка орудий из видеоигры - я следовал инструкциям и сделал именно так, как они анализировали список имен / возрастов, но я не могу запустить этот код ...

Я пытался создать Guns.new (имя, боеприпасы) до разбора, который не работал ..

# FILE IN FORMAT "gun, ammo" IS IN "gunsammo.txt"
def load_guns(filename)
  guns = []
# load gun names and ammo types from file "gunsammo.txt"
  file = File.open(filename, "r+").read
  file.lines do |line|
    gun_type = line.split(", ")
    name = gun_type.first #[0]
    ammo = gun_type.last.to_s #[1]
    gun = Guns.new(name, ammo)
    guns << gun
    # puts "imported #{gun.display}"
  end
  # RETURN GUNS FROM TEXT gunsammo.txt
  guns
end

eft_guns = load_guns("gunsammo.txt")
eft_guns.each {|gun| p guns}

Я ожидал получить вывод следующего списка в формате массива:

[
ADAR 2-15, 5.56x45mm NATO
AK-101, 5.56x45mm NATO
AK-102, 5.56x45mm NATO
AK-103, 7.62x39mm
AK-104, 7.62x39mm
AK-105, 5.45x39mm
AK-74, 5.45x39mm
AK-74M, 5.45x39mm
AK-74N, 5.45x39mm
]

Вместо этого я получаю следующие ошибки:

enter code here

/RUBY/class_ammo.rb:11:in `block in load_guns': uninitialized constant Guns (NameError)
    from C:/Users/**/Documents/CODING/RUBY/class_ammo.rb:7:in `lines'
    from C:/Users/**/Documents/CODING/RUBY/class_ammo.rb:7:in `load_guns'
    from C:/Users/**/Documents/CODING/RUBY/class_ammo.rb:19:in `<main>'

1 Ответ

0 голосов
/ 21 апреля 2019

Руби не знает, что такое Оружие.Вам нужно определить класс оружия.На самом деле, я бы назвал его Gun, поскольку имя класса обычно должно быть в единственном числе.

class Gun
    attr_reader :name
    attr_reader :ammo

    def initialize ( name, ammo )
        @name = name
        @ammo = ammo
    end
end

Кроме того, ваш входной файл никогда не закрывается.Чтобы читать файл построчно, вы можете использовать этот удобный метод:

File.readlines(filename).each do |line|
    # Do something with line
end

Используя этот метод, файл автоматически закрывается в конце.

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