Nerimarb#3へ行った!!

本日はNerimarbへ参加させていただきました!

今回のテーマはObjectクラスでした!

みんなでるりまのObjectクラスの章を読み進めていきつつ、疑問を深掘りしてみたり、解説をしていただいたり、rubyの実装をみにいったりしていき、

気づいたことや試したこと、参考リンクなどはesaに書いていきながら進めていきました!

docs.ruby-lang.org

 

 

ObjectクラスはStringintegerArrayHashなど全てのクラスの親クラスです。

それぞれのクラスで定義されているメソッドがObjectクラスにも定義されていたりします。

  

ただ、同じメソッドでもそれぞれのクラスで定義されているものとObjectクラスに定義されているものでは挙動が違うものがあり、頭がこんがらがりましたw

各クラスの性質に合わせて再定義されることを期待しているようです。

例)

self <=> other -> 0 | nil[permalink][rdoc]
    self === other である場合に 0 を返します。そうでない場合には nil を返します。 

self == other

    デフォルトでは equal? と同じオブジェクト の同一性判定になっています。 

 

  

その他にもto_sとto_str(to_i / to_int、to_a / to_ary、to_h / to_hash)の違いについてわかっていなかったのですが理解することができました!

codeday.me

 

 

さらに、「Rubyのcaseを〇〇(言語名)のswitch文だと思っている人たちにぼくから一言ガツンと申し上げたい」という記事を紹介していただいたりもしました!

melborne.github.io

 

 

cloneメソッドのところでは、深いコピーと浅いコピーがあることを知ることができました!

浅いコピーは自身を複製するだけで、オブジェクトの指し ている先までは複製しないようです。
深いコピーが必要な時はMarshalモジュールを利用するようです。

 

 

感想その他

読み進めていく中で、「このメソッドよく分からないな、いつどうやって使うんだろう?」

というものもあったのですが、どうやら「Effective Rubyにはそれらの使い所が結構詳しく書いてあるようなので、Effective Rubyを読んでみたい気持ちがさらに高まりました!!

次回も参加したい気持ちです!!

また、練馬区民の参加者が10人集まれば団体登録することができ、施設を半年前から予約することができるそうなので練馬区民の参加者が増えるといいなと思います!!(自分は全然練馬区民ではないですがw)