私は 1 回限りの 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?
ブロック内から自分の関数にアクセスするには、どのようなシェナニガナリーを行う必要がありますか?スクリプトのどこにもプライベート宣言がないのに、プライベート メソッドとして表示されるのはなぜですか?