Как способ изучить все аспекты рубинов, я решил сделать (относительно простую) текстовую RPG. Все до сих пор прошло хорошо, за исключением того, что недавно я попал в блокпост, который я раньше не видел.Ruby: Undefined Method `<'
Моя цель: если стат (улица, Защита, аги, человек) является < 0, я хочу сделать это = 0. По какой-то причине, хотя, рубин, кажется, не нравится `<».
Вот код рубин висит на:
def self.compile
@str = ProfileData.load['g_str']
@def = ProfileData.load['g_def']
@agi = ProfileData.load['g_agi']
@man = ProfileData.load['g_man']
@smin = 1
@dmin = 1
@amin = 1
@mmin = 1
if @str < @smin
@str = 0
end
if @def < @dmin
@def = 0
end
if @agi < @amin
@agi = 0
end
if @man < @mmin
@man = 0
end
@str.round!
@def.round!
@agi.round!
@man.round!
d = YAML::load_file('./profile')
d['mstr'] = @str
File.open('./profile', 'w') {|f| f.write d.to_yaml}
d = YAML::load_file('./profile')
d['mdef'] = @def
File.open('./profile', 'w') {|f| f.write d.to_yaml}
d = YAML::load_file('./profile')
d['magi'] = @agi
File.open('./profile', 'w') {|f| f.write d.to_yaml}
d = YAML::load_file('./profile')
d['mman'] = @man
File.open('./profile', 'w') {|f| f.write d.to_yaml}
конца
Теперь, когда я бегу через мою программу, я получаю этот код ошибки, когда он, наконец, работает «компилировать»:
start.rb:734:in `compile': undefined method `<' for []:Array (NoMethodError)
И все. Есть ли какие-либо сведения о том, что произошло или как я могу это исправить? Любая помощь очень ценится!
Похоже, ваш код загрузки '@str = ProfileData.load [«g_str»]' возвращает массив, а не отдельное значение, поэтому он не может быть использован в '<' сравнения. – mikej
Где вы писали 'if @def <@ dmin', вы имели в виду' if @ ddef ...'? Потому что вы назвали переменную '@ ddef'. –
@SebastianMotraghi - спасибо, что поймал это. Это было случайно оставлено после попытки решить проблему ранее. Я забыл удалить дополнительный d. –