トップページ > プログラム > 2016年10月12日 > Kt1Sq3SL

書き込み順位&時間帯一覧

21 位/239 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000010110003



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
Ruby 初心者スレッド Part 59 [無断転載禁止]©2ch.net

書き込みレス一覧

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")することによって、配列名としての役割をもたせられた?
というわけですね。要するに二次嫁を実際に動かすメソッドというわけですよね。
なんてすごいんだ。これからはこれを使いまくろう。素晴らしいものを教えていただきありがとうございました。
ハッシュは書くのがめんどくさいので、これにします。でも情報ありがとうございました。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。