4日目
今日の学習
Ruby
メソッドとオブジェクトの関係性
昨日詰まっていたところが無事理解できた。
countries = ["japan", "china", "america"]
この配列を、頭文字だけ大文字にして出力したいときはどうすればよいか。
はじめは変数に、capitalizeメソッドを使って出力しようとした。
countries.capitalize
エラー文が出てしまい、他にも破壊的メソッドにしてみたり他のメソッドを検索したりしてみたが解決できず。
メンターの方に尋ねると、「capitalizeメソッドなどは、Stringに使用する」と決まっている。
しかし、countriesは配列...Arrayなので、直接capitalizeメソッドを使うことはできない。
配列の中のひとつひとつの文字列に対してメソッドを実行する必要がある...とご教示いただけた。
今までデータ型を全く意識できていなかったので、目から鱗。
mapメソッドを使い、新しく配列を作成する。
countries.map!{ |country| country.capitalize}
これで、無事に出力ができた。
Rubyの公式ドキュメントを確認して、データ型を把握することの重要性を理解した。
どのメソッドが使えるかどうかは、メソッドを使う値が何の種類のオブジェクトなのかによって変わる。
(methodsメソッドを使うことにより、どんなメソッドが使用できるかどうか調べられるっぽい)
そして、Rubyではオブジェクトの種類をクラスと呼ぶ。...なるほど。
アクセサメソッド
Progateで、インスタンス変数を勉強したときに「attr_accessor」をいきなり習った(はず)。
実際にはアクセサ...セッターとゲッターというものを簡略化した形であるということを学んだ。
ハッシュオブジェクト
ハッシュのキーに使われている「:」これが、前についたり後ろについたりしているのを見て、一体どういう基準なのか?と思っていた。
users = { "name" => "Hasegawa", "age" => 25 } users = { :name => "Hasegawa", :age => 25 } users = { name: "Hasegawa", age: 25 }
これらの書き方は全て同じ意味であることを知った。一番下の形しかろくに知らなかったせいで混乱していたのかもしれない。
他にも、アクセサメソッドのように元の形を知らなければどういう意味なのか分からないまま適当に流しているものが色々ありそう。
学習メモ
- Ruby 配列が初心者でもわかる!7個の重要なメソッド…|Udemy メディア
- Rubyのmergeメソッドでハッシュを結合する方法【初心者向け】 | TechAcademyマガジン
- ハッシュを配列に変換する - 逆引きRuby
- オブジェクトの存在確認の記法まとめ(if obj, if obj.nil?, if.obj.empty?, if obj.blank?, if obj.present?・・など) - Qiita
- initializeメソッド...クラスがインスタンス化されたときの初期値を設定するときに利用
- 多次元配列、多次元ハッシュ...配列(ハッシュ)の中にまた配列(ハッシュ)がある
- flattenメソッド
今日のやらかし
- 何度かendを書き忘れてエラーが出る。先に記述するように意識する。
- インスタンス変数をクラス内で使用するときに、@をつけ忘れる。
余談
ドットインストールのプレミアム会員に加入。
Rubyを中心に学習予定。