【发布时间】:2018-08-31 16:16:51
【问题描述】:
我正在尝试使用 YAML 文件,从中读取并向其写入值列表。在第一次运行此脚本时,正确创建了 yaml 文件,但在第二次运行时,它会引发我不知道要修复的转换类型错误。
db_yml = 'store.yml'
require 'psych'
begin
if File.exist?(db_yml)
yml = Psych.load_file(db_yml)
puts "done load"
yml['reminders']['reminder_a'] = [123,456]
yml['reminders']['reminder_b'] = [457,635,123]
File.write(db_yml, Psych.dump(yml) )
else
#the file does not exist yet, create an empty one.
File.write(db_yml, Psych.dump(
{'reminders' => [
{'reminder_a'=> [nil]},
{'reminder_b'=> [nil]}
]}
)) #Store
end
rescue IOError => msg
# display the system generated error message
puts msg
end
在第一次运行时生成文件 store.yml:
---
reminders:
- reminder_a:
-
- reminder_b:
-
到目前为止一切顺利。但是在第二次运行时它失败了
done load
yamlstore.rb:23:in `[]=': no implicit conversion of String into Integer (TypeError)
from yamlstore.rb:23:in `<main>'
你能告诉我哪里出错了吗?
【问题讨论】: