見出し画像

#203 Ruby技術者認定試験問題(constant Object::DATA)

こんばんは、hiroです😄

本日からRuby技術者認定試験問題の" Gold "にチャレンジをします!
1回目は絶対に分からないなと思い、問題を写経し、どのような回答になるかを確認しました。
まだ5問しかやっていないのですが、率直な感想は

" マジで何やってるかわかんね "

でしたw

一方で、Rubyの構文でまだまだ知らない内容が出てきて、嬉しい気持ちにもなっています😂Goldの合格ラインまで到達することが出来れば、もう1ステップ、2ステップレベルアップ出来そうです!頑張ります!


問題

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

while not DATA.eof?
  lines = DATA.readlines
  lines.map(&:chomp!)
  lines.reverse
  p lines
end

__END__
1
2
3
4



回答

["1," "2", "3", "4"]



解説

constant Object::DATA
スクリプトの__END__プログラムの終わり以降をアクセスするFileオブジェクト。ソースファイルの__END__以降は解析・実行の対象にならないので、その部分にプログラムが利用するためのデータを書き込んでおくことができる。__END__以降のデータは、DATAという定数を使ってアクセスできる。


改めて問題を見てみる

while not DATA.eof?  => ファイルの終わりまで読み込んだかを返す
  lines = DATA.readlines  => ファイルから全て読み込む。内容は各業を要素にもつ配列
  lines.map(&:chomp!)  => chomp!で破壊的に末尾の改行を取り除く
  lines.reverse  => 配列の内容を逆順にする。しかし、!がついていないためそのまま
  p lines
end

__END__
1
2
3
4

以上から回答は以下となる。

["1," "2", "3", "4"]


本日はここまで!

最後まで、読んでいただきありがとうございました!🙇‍♂️

この記事が気に入ったらサポートをしてみませんか?