Ruby研修初日

今日の作業

depotのテストケースの作成
Ruby研修サポート

今日の作業でわかったこと&わからなかったこと

今日はRuby研修にサポート役として参加しました。
僕はRubyの勉強を初めてい1ヶ月と七日になります。
その勉強法としてRuby文法の勉強はRailsアプリを作りながらわからないことがあったら、
その都度調べるやり方でやってきた。
だから今回の研修ではまだ今までに出会っていない文法を知ることができたり、
知っていた文法についても今まで以上に理解が深まったと思う。
Ruby研修はあと二日あるので有効活用していきたい。

明日やること

depotのテストケースの作成
Ruby研修サポート

調べたことのまとめ

シンボルについて

Railsでシンボルが多用されている理由がわからなかった。
そもそもシンボル自体なんなのかを調べてみた。
RailsによるアジャイルWebアプリケーション開発には

シンボルとは、文字リテラルがマジックによって定数に変えられたもので、
別の捉え方として、コロンは「と名付けられたもの」を表している。
つまり:idは「idと名付けられたもの」ということになる。

とあった。ん〜いまいちわからないのでネットで調べた。

シンボルとは文字列みたいなものでコロンのあとに続けて文字を書けば、
リテラルとしてSymbolクラスのオブジェクトになる。

irb(main):001:0> a = :id
=> :id
irb(main):002:0> a.class
=> Symbol

Stringクラスのオブジェクトとの違いは同じ名前のシンボルは、
必ず同じオブジェクトになる。

irb(main):003:0> :id.object_id
=> 30498
irb(main):004:0> 'id'.object_id
=> -605520998
irb(main):005:0> :id.object_id
=> 30498
irb(main):006:0> 'id'.object_id
=> -605546898

文字列は毎回オブジェクトを生成しているけど、シンボルは常に同じオブジェクトになる。
よって'id'と書くと毎回Stringの'id'を生成するが、:idと書くと初回しか生成しないため速度が
向上する。

参考
http://d.hatena.ne.jp/maluboh/20060720

Rubyの可視性
public 全てのオブジェクトから参照可能
protected 自クラスおよびサブクラスからのみ参照可能
private 関数形式でのみ、自クラスおよびサブクラスから参照可能
関数形式

オブジェクト指向パラダイムにおいては関数というものは存在せず、
何かのオブジェクトに対してメッセージを送信することによって処理を行う。
「obj.method」みたいな感じ。
しかしメッセージ送信先のオブジェクトが明らかにわかっている場合
(自身のクラス内でメソッドを呼び出す場合など)は面倒で柔軟性にかける。
そのためオブジェクト部分を省略した形式を許していて、
それを関数形式とよぶ。
自クラス・サブクラス以外から関数形式は利用できないので、
外部からのアクセスが禁止される。