- Ruby 初心者スレッド Part 59 [無断転載禁止]©2ch.net
35 :デフォルトの名無しさん[sage]:2016/10/12(水) 17:14:15.29 ID:Kt1Sq3SL - fruits=["apple", "orange", "grape", "tomato", "doria", "peach"]
apple_price=[2, 6, 7, 13, 6, 20] puts "#{fruits[0]}_price"[4] 上のコードでapple_price[4]の要素6を取り出したいのですが、"e"が表示されます。これは"apple_price"という文字列の 5番目を見ている、というのは理解できます。6を表示させるにはどうすればよいのでしょうか。よろしくお願いします。
| - Ruby 初心者スレッド Part 59 [無断転載禁止]©2ch.net
37 :デフォルトの名無しさん[sage]:2016/10/12(水) 19:02:48.90 ID:Kt1Sq3SL - おお、すごい!ちゃんと6が表示されました。ありがとうございます。
ちょっと、今ググってみると、「「eval」は、Rubyの文字列を評価するメソッドです。」とあり、 評価するという意味が分かりませんが、とにかく文字列をつなげて“配列名”として扱える ことができるのはわかりました。 なんでこんな妙なこと?をしているのかというと、配列名がすさまじく増えてきた上に、長くなってきて 見苦しくなってきたので、配列名の単語リスト配列を作成してその配列から番号で拾ってきてつなげれば 短くなって済むじゃんという動機でした。ところが、それらの文字がうまくつながらないので困っていた次第です。 とにかく、ありがとうございました。もうちょっと調べてみます。
| - Ruby 初心者スレッド Part 59 [無断転載禁止]©2ch.net
40 :デフォルトの名無しさん[sage]:2016/10/12(水) 20:26:38.78 ID:Kt1Sq3SL - いや、このevalってすごいですね。つまり、"#{fruits[0]}_price"はこの時点では配列名でもなんでもなく
ただの文字列だけど、eval("#{fruits[0]}_price")することによって、配列名としての役割をもたせられた? というわけですね。要するに二次嫁を実際に動かすメソッドというわけですよね。 なんてすごいんだ。これからはこれを使いまくろう。素晴らしいものを教えていただきありがとうございました。 ハッシュは書くのがめんどくさいので、これにします。でも情報ありがとうございました。
|
|