私がRubyでやろうとしていることは、文字列(例えば配列など)に由来する名前を持つオブジェクトを作成することです。次に、そのオブジェクトをさらにコードで使用したいと思います。Ruby:名前なしでsendによって作成されたオブジェクトにアクセスするには?
ので、例えば:
array = ["a", "b", "c"]
array.each do |x|
send x + '_data'
x + '_data' = []
x + '_data' << "foo"
end
以上、当然のことながら、動作しません。
私はこれに私の頭脳、文書、それにすべての朝を詰め込んだ。あなたの助けに感謝します!
アイデア?
ありがとうございます!
乾杯、 カイル
明確にするためEDIT:
[OK]を、send
の私の理解が間違っていました。
配列内の各文字列について、配列を作成したいとします。 a_data
、b_data
、c_data
はその後、私は "foo" という各配列を移入します:
は、したがって、上記のループは、3つの配列を作成します。のでa_data[0] => "foo"
ありがとう!
ダブル編集:
ここで私がやっているのより完全な説明と私の少し変更された実際のコードです:
私はつぶやきの何千もの大きなJSONファイル(だけでなく、テキストを持っています、しかし、twitter apiからの完全なjson)。
次にトピックと関連するキーワードに基づいたハッシュの配列を持っています。 "料理"→ "器具"、 "オーブン"、 "電子レンジ"。
トピックハッシュの配列をループして、トピックキーワードのいずれかがツイートテキストの単語と一致するかどうかを確認します。
一致するものがある場合は、そのツイートを新しい配列に追加します。 y'allののヘルプみんなのため
# topics is an array of hashes. Each hash contains title and list of keywords
topics.each do |topic|
# create an array with the topic's name to store matches
(topic[:title] + '_tweets') = []
topic[:keywords].each do |kw|
# loop through array of hashes (parsed json) to check for keyword matches in strings
tweets.each do |tweet|
text = tweet["text"]
# if string contains keyword, add to the topic's array
if text.include? kw
(topic[:title] + '_tweets') << tweet
end
end
end
ありがとう!
「名前付きオブジェクト」とはどういう意味ですか? 'send'を使うと、オブジェクトを作成するのではなく、オブジェクトにメッセージを送ることができます。また、オブジェクトは名前を持たず、定義していない場合は 'name'という属性を持つことができます。あなたが達成しようとしていることの詳細を教えてください。 –
なぜこれをやりたいですか?私があなたを正しく理解していれば、あなたは[動的にローカル変数を設定する]ことができます(http://stackoverflow.com/questions/4963678/dynamically-set-local-variables-in-ruby)が、ポストが示唆しているように、ハッシュを使用して私の実際のコードで良い – lusketeer
する必要があります、私はハッシュの配列を持っています。各ハッシュには名前とキーワードのリストがあります。私は、ハッシュの配列をループし、ハッシュのキーワードをより大きなテキストの文字列にマッチさせ、それらの一致の文をハッシュの名前を持つ新しい配列に保存したいと思います。 –