22日目
今日の学習
Ruby
CSVファイルからクラスのインスタンスを作成する方法
たくさんのデータを管理する場合は、CSVファイルを作成すると良いと教えていただいたので、クイズプログラムのクイズデータをCSVに移してみようと思ったのだが、うまくいかず四苦八苦......。
CSVファイルの情報を、クラスのインスタンスにするという流れが難しく、ここ数日あれやこれやと試しているが上手くいかない。
一応、データは流し込めたもののデータ一つが配列として渡ってしまって困ったりと色々。勉強時間のうち大部分を割いてしまっている。
クラスに拘らなければそのままデータが使えたが、目的はクラスインスタンスに使用することなので、もう少し色々と考えてみる。
処理を終了させるexit
(https://hasegawa-note.hatenablog.com/entry/2021/05/22/001031)[この記事]で、throwメソッドとcatchメソッドを利用して、quitと入力されたらその時点でプログラムを終了させるようにしてみたと書いたが、もっと単純な方法があった。
exit
を使えばプログラム自体を終了できる。
throwメソッドとcatchメソッドの利用を思いついた後、「もう一度ゲームを遊ぶかどうか」の選択肢を加えた。
quitと入力すると、クイズ自体は終了するのだが、最後のもう一度遊ぶかどうかの選択肢が出てきてしまい、なんだか手間だなと感じたので、これら全てをすっ飛ばして終了する方法を見つけた。
throwメソッドとcatchメソッドは、「一旦この処理はスキップさせたい」という時にまた思い出して使いたい。
ハッシュとシンボル
Ruby本で学習。
Railsでも未だに、:
が前についていたり後ろについていたり基準と意味合いに対する理解があまりにもなさすぎるので、危機感を覚えている。
ハッシュはキーと値の組み合わせでデータを管理するオブジェクト
そして、そんなハッシュのキーとしてよく使われているのがシンボル。
シンボルは、見かけ上は文字列に見えるが、中身は整数のため、文字列よりも処理が高速になる。
データを取り扱う上で、処理が早い上にイミュータブルなので値が勝手に変わることもない。
さらに、キーのみならず値もシンボルの場合も存在する。
{ name: :Tanaka, age: :20 }
データを取り扱えるのは分かったが、なぜRailsであんなに頻出するのだろうか。
最近作ったアプリを適当に眺めてみると、コントローラでbefore_action
を設定するときに、:メソッド名
と書いてある。
シンボルにはメソッドを呼び出す効果もあるのだろうか...と、勉強をし始めた頃に参考として貼り付けておいた記事をもう一度読んでみると、謎が解けた。けっこう最初の頃に読んだので、内容が理解できていなかった。
Railsでよく出てくるコロン(:)は、シンボルって言うやつらしい – Ruby on Rails 始めました
メソッドや変数、またはクラスなんかを定義すると、内部的にそれらを指定するためのシンボルオブジェクトが勝手に作られる
なるほど、作ったもののシンボルを勝手に作ってくれているおかげで、シンボルで指定することが出来たのか。
...それで、前と後ろどちらに:
がつくんだろう。
シンボルとして使いたい場合、前に:
がついて、後ろに:
の場合はキーを意味しているということでいいんだろうか。
ハッシュの記法がたくさんあるせいで、めちゃくちゃ混乱してしまっている。
ハッシュの記法をおさえて、Railsにおける「シンボルは前なの?後ろなの?」問題でもう悩まないんだぞ - Qiita
分かりやすい。今後、コロンを使う際は意識してみようと思う。