#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"]
本日はここまで!
最後まで、読んでいただきありがとうございました!🙇♂️
この記事が気に入ったらサポートをしてみませんか?