Closed kazuminn closed 9 years ago
textの中身に、空白文字やカンマ括弧、四則演算記号その他いろいろが含まれてたりするからですね、
text = '@'+'お わ た'
eval "#{text} = Tree.new"
@お わ た = Tree.new
(た=Tree.new) #代入
わ (た=Tree.new) #メソッド呼び出し
@お (わ (た=Tree.new) #メソッド呼び出しぽいけど@がついてるからインスタンス変数、解釈不能
instance_variable_set text, Tree.new
が代わりに使えますが
instance_variable_set/instance_variable_setを両方使うくらいなら
@all_posts[title] = Tree.new
@all_posts[title].each do end
でいいんじゃないかなと思います
記事のタイトルがたまたま「Q.A なぜ, `rm -rf`, は危険なのか」だった場合
eval "@Q.A `rm -rf`, は危険なのか = Tree.new"
#↑↓ 同じような形をしてるのでrubyの構文として正しくて、普通に外部コマンドが実行されてしまいそう?
@array.push `rm -rf`, (hoge = 3)
@all_posts[title] = Tree.new @all_posts[title].each do end
ちょっと、わかんないです。
あ、もしかして、 textを短くして、文字と数字だけにすればいいので
eval("#{text} = Tree.new") eval("#{text}[array[x]] = x")
すればよい。ですか?
なら
text = "@" + node[:href].split("/")[-1]
すれば、urlの/から$まで取れる。 /から$までは、文字か数字なので大丈夫感。
解決したっぽいです。
ありがとうございました。
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-darwin14.0]
eval関係でerrorが出るのですが、どう直せばいいのか教えて欲しいです。
どんなコード
グノシーの記事のタイトルを複数取って来て、一つの記事に対してnatto(mecabのラッパ-)を実行して名詞の キーワードを辞書列順に部分木に挿入する。(一つの記事に、一つの木)
コード
https://gist.github.com/kazuminn/2949ee502fa491b0b088
error