そんな今日この頃でして、、、

コード書いたり映画みたり。努力は苦手だから「楽しいこと」を探していきたい。

Rubyのお勉強 第9章 クラスを使って複数のデータをまとめよう & 第10章

作りながら学ぶRuby入門 第2版

作りながら学ぶRuby入門 第2版

 

この章からより実践的な内容に。

 

 

9章では新たにクラスの概念が紹介されている。

 

クラスの定義は「class [クラス名]~end」で定義する。

インスタンスを作成する際はnewメソッドを用いる。

また、メソッドは「def [メソッド名]~end」で定義する。

僕はこれまで{}で囲うタイプの言語ばかり使っていたのでちょっとまだ変な感じがする。

 

 

ちなみにインスタンスを作成した際の初期化の処理はinitializeメソッドで作成する。

もともとObjectクラスのnewメソッド内でinitializeメソッドを呼び出すようになっているため、インスタンス作成時に初期化処理が行われるようになる。

このあたりが予め用意されているあたり、初めからオブジェクト指向を主眼において作られている言語は楽で良い。

 

インスタンス毎に保持されるインスタンス変数は「@[変数名]」として定義する。

また、クラスレベルで保持されるクラス変数は「@@[変数名]」として定義する。

クラス変数に関してはメソッドの外側で定義してやる必要がある。

 

セッターは下記のように記述する。

def test

  @test

end

return を省略できるあたりはPerlっぽい。

 

ゲッターは下記のように記述する。

def test=( value )

  @test = value

end

セッターの記述は僕が使ったことがある言語の中でも初めて見る形なので面食らうが、これはこれで分かりやすくて良いなと思った。

 

また、アクセサメソッドを使うことによりセッターとゲッターを楽に定義できる。

例:@nameと@ageのゲッターとセッター↓

attr_accessor :name, :age

 

他にもattr_readerとかattar_writerとかattar_accessorがある。

 

一から用意すると割とめんどくさいものが言語仕様として用意されているあたり、Rubyは楽で良い。

 

 

10章は8章までで作っていた例題(データを配列としてもつ)のクラス化。

出力メソッドをクラス内部に持たせることで後からのデータ形式の変更の際にも修正箇所を最小限に留めることができる。

 

-------------------------------------------------

余談

僕はカフェイン好きかつ寒がりだったりする。

結構な頻度でコーヒーを飲むタイプなのだけれど、こう寒いといちいちお湯を沸かすのも億劫なので大きめの保温できるコップがほしいなと思い、各所でオススメされてた↓を買ってみた。

THERMOS 真空断熱タンブラー2個セット シルバー 400ml JMO-GP2

THERMOS 真空断熱タンブラー2個セット シルバー 400ml JMO-GP2

ちょっと良いお値段するけどしっかり保温してくれる感じが良いのと、400mlとコップとしてはかなり大容量なのでガブ飲みしてしまうタイプな僕には使い勝手が良い。

1個だけの販売もあるけど価格的に2個の方がお得だし、自宅と会社で1個づつ置いておくのに良いかなと。