Just do IT

思うは招く

RExの問題を振り返る2

REx - Ruby Examinationで出てきた問題を振り返る。

問題

次のコードを実行するとどうなりますか。

s = <<'EOF'
Hello,
Ruby
EOF
'EOF'

p s

解答

以下が表示される。

"Hello,\nRuby\n"

解説

これはヒアドキュメントという機能を使ったもの。

普通の文字列リテラルはデリミタ(", ', など)で囲まれた文字列ですが、ヒアドキュメントは<<識別子' を含む行の次の行から `識別子' だけの行の直前までを文字列とする行指向のリテラルです。

docs.ruby-lang.org

  • <<と書いたあと、EOSなどの文字で文字列を囲むと、改行を含む文字列を変数に代入することができる
  • EOSなどの文字はなんでもいい。慣例的にEOSやEOLが使われる

例:aaaにしても動く

data = <<aaa
test
テスト
123
hoge
aaa

p data
=> "test\nテスト\n123\nhoge\n"