Ruby のヒアドキュメント(基礎編)
Railsから離れてRubyネタです。
ヒアドキュメントについてRuby リファレンスマニュアルを参考に、もっと簡単に説明してみよう!と思いました。(が、簡単に仕上がったのかは疑問符が付く)
ヒアドキュメントは、簡単に言うと、文字列を見やすい形で複数行に渡って書く、という機能ですね。
例1:簡単な例
これは下と全く一緒の意味なのでした。
ポイントは
・"EOS" と EOS とで文字列をはさむ
・<< と 1 番目の "EOS" の間にスペースがあってはいけない
・2 番目の EOS の行は、先頭にスペースがあってはいけない
・文字列の各行の行頭のスペースは反映される
・文字列の各行の終わりには必ず\nが付いている
ちなみに、2カ所にあるEOSですが、自分の好きな文字に変えてもOKです。abcでも123でも。しかし、EOS が良く使われるそうです。
例2:複数行もいけるよ、の例
これは下と全く一緒の意味なのでした。
ちょっとー、これじゃあフツーに文字列書いたのと同じじゃないの?
と思うかもしれませんが、この文字列は↓と一緒で先頭に余計な改行が入ります。
例3:文字列の中で式を展開できる、の例
1 番目の EOS をダブルクォーテーションで囲むか、何も囲まないかだと文字列の中で式を展開できます。
これは下の値が代入されます。
1 番目の EOS をシングルクォーテーションで囲むと、式が展開されません。
これは下の値が代入されます。#{var1}が展開されません (>_<)
次回は、発展編でも書いてみようかな?
【広告】
ヒアドキュメントについてRuby リファレンスマニュアルを参考に、もっと簡単に説明してみよう!と思いました。(が、簡単に仕上がったのかは疑問符が付く)
ヒアドキュメントは、簡単に言うと、文字列を見やすい形で複数行に渡って書く、という機能ですね。
例1:簡単な例
my_str =<<"EOS"
私の文字列です
EOS
これは下と全く一緒の意味なのでした。
my_str = " 私の文字列です\n"
ポイントは
・"EOS" と EOS とで文字列をはさむ
・<< と 1 番目の "EOS" の間にスペースがあってはいけない
・2 番目の EOS の行は、先頭にスペースがあってはいけない
・文字列の各行の行頭のスペースは反映される
・文字列の各行の終わりには必ず\nが付いている
ちなみに、2カ所にあるEOSですが、自分の好きな文字に変えてもOKです。abcでも123でも。しかし、EOS が良く使われるそうです。
例2:複数行もいけるよ、の例
my_str2 =<<"EOS"
私の文字列です
さらに私の文字列です
EOS
これは下と全く一緒の意味なのでした。
my_str2 = "私の文字列です\nさらに私の文字列です\n"
ちょっとー、これじゃあフツーに文字列書いたのと同じじゃないの?
my_str2 ="
私の文字列です
さらに私の文字列です
"
と思うかもしれませんが、この文字列は↓と一緒で先頭に余計な改行が入ります。
(さらに文字列の中に直接ダブルクォーテーションを書けないのでエスケープしなくてはならない、という制限も加わります)my_str2 = "\n私の文字列です\nさらに私の文字列です\n"
例3:文字列の中で式を展開できる、の例
1 番目の EOS をダブルクォーテーションで囲むか、何も囲まないかだと文字列の中で式を展開できます。
var1 = "文字列"
my_str3 =<<"EOS"
私の#{var1}です
さらに私の#{var1}です
EOS
これは下の値が代入されます。
私の文字列です\nさらに私の文字列です\n
1 番目の EOS をシングルクォーテーションで囲むと、式が展開されません。
var1 = "文字列"
my_str3 =<<'EOS'
私の#{var1}です
さらに私の#{var1}です
EOS
これは下の値が代入されます。#{var1}が展開されません (>_<)
私の#{var1}です\nさらに私の#{var1}です\n
次回は、発展編でも書いてみようかな?
【広告】