rubyのsilverを勉強していく中で、この問題が正解できなかったので、それを解説する意味でもこの記事を書かせていただきます。
この問題を正解するうえで、抑えておくべきポイントは、
- w :書き込みモード。
- w+ :読み書きモード。既にファイルが存在する場合は、空になります。新規作成もされます。
- r :読み込みモード。
- r+ :読み書きモード。ファイルの読み込みと書き込みの位置は文の先頭から。
- a :追記モード。既存のファイルの文末に入力内容を追記する。
- a+ :読み書きモード。ファイルの読み込み位置は先頭に、書き込み位置は常に末尾になる。f.rewindでファイルポインタをファイルの先頭に移動したとしても、ファイルの末尾に書き込まれる。
1個ずつ解説していきますね
##w
wはwriteのwと覚えれば役割がはっきりしますね。
既存のファイルに、書き込みをしていく機能なんですね。
##r
readのrと覚えればわかりやすいですね!
既存のファイルを読み込む機能ですね。どんな記述がされているかなどを読みこむためのものですね。
##a
appendのaと覚えれば分かりやすいですね!
appendメソッドと同じように、書き込み位置は末尾になるんですね。
##+がつくとどうなるか?
+がつくとどうなるか?どっちもできるようになります。例えばどういうことかというと、
wは書き込みモードですが、+がつくと読み込み機能も付加されるんです。他も同様に、ない機能が追加されるといった感じです!
##IOクラスについて
IOクラスとは、外部データとやり取りするための機能として、入力(Input)と出力(Output)を提供するためのものなんです。
IOはinputとoutputの頭文字をとったものなんですね。
seekメソッドに関しては、こちらの公式ドキュメントをお読みください!
seek_setは今回の問題でいえば、値は先頭からということですね。
##今回の問題の正解
今回の問題でいえば、wとw+は不正解です。なぜなら、今回の問題のIO:seek_setはファイルポインタを先頭に移動するため、上書きされてしまうんですね。
表示結果がrecode2だけが表示されるんですね。
そのため、今回でいうと正解は、aとa+です
以上です!
間違い等ございましたら、ご教示いただけると幸いです!