【发布时间】:2016-02-10 23:25:42
【问题描述】:
contacts_r = File.open("user_contacts.txt", "r")
user_contacts = []
contacts_r.readlines.each { |line|
user_contacts << line.chomp
}
$c = Hash[user_contacts.map { |x| ["$#{x}_called", Array.new] } ]
当我尝试在所需的数组中添加信息时...
$c["#{name}_called"] << 1
我得到一个未定义的方法'<<' for nil:NilClass (NoMethodError)
当我使用..
puts $c
输出看起来像
{"$robert_called"=>[]}
我试图让它看起来像
{"$robert_called"=>[1]}
【问题讨论】:
-
什么是
name?如果不是"robert",则错误很明显。您的代码看起来还不错。 (我可能会将整个事情压缩成user_contacts = File.read(filename).lines.map(&:chomp)或懒惰的user_contacts = File.open(filename) { |f| f.each_line.map(&:chomp) },并使用带有默认proc(c = Hash.new { |h, k| h[k] = [] })的哈希,所以我根本不需要初始化它......另外,请注意全局变量,他们有一个讨厌的习惯,在背后咬你。 -
"#{name}"我的意思只是名称所在的地方......它实际上不是代码的一部分:\ @Amadan