プログラミング備忘録

プログラミングの学習状況をメモしています

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 }  

これらの書き方は全て同じ意味であることを知った。一番下の形しかろくに知らなかったせいで混乱していたのかもしれない。

他にも、アクセサメソッドのように元の形を知らなければどういう意味なのか分からないまま適当に流しているものが色々ありそう。

学習メモ

今日のやらかし

  • 何度かendを書き忘れてエラーが出る。先に記述するように意識する。
  • インスタンス変数をクラス内で使用するときに、@をつけ忘れる。

余談

ドットインストールのプレミアム会員に加入。

Rubyを中心に学習予定。