我正在使用一次性 Ruby 脚本(因此不在显式定义的模块或类中),并且很难从 .each 块中访问我之前在脚本中定义的函数。
def is_post?(hash)
if hash["data"]["post"] == "true" #yes, actually a string
true
else
false
end
end
#further down
threads["data"]["children"].each do |item|
puts item["data"]["title"] unless item.is_post?
end
结果:
in 'block in <top (required)>': private method `is_post?' called for #<Hash:0x007f9388008cf0\> (NoMethodError)
threads
是一个非常非常嵌套的哈希。散列,包含数组的散列,数组包含带有标头数据的散列,其中包含带有其余详细信息的另一个散列。有点乱,但我没有编写生成该模块的模块:P
这个想法是遍历数组并从每个数组中检索数据。
我的问题是:
我需要采取什么样的诡计才能
is_post?
从块内访问我的功能?当我的脚本中没有任何私有声明时,为什么它会作为私有方法出现?