ソースコードから理解する技術-UnderSourceCode

手を動かす(プログラムを組む)ことで技術を理解するブログ

「パーフェクトRuby」を読み返してみて

去年末から今年に掛けての正月休み中、「パーフェクトRuby」を読みました。
その後、Rubyでサンプルプログラムを作成していたところ
Rubyについて確認したいことが出てきたため、「パーフェクトRuby」を読み返しました。

以下、自分が確認したことについて、備忘録として残しておきます。

■モジュール

・モジュールからインスタンスを作ることはできない
 →モジュールを名前空間として使う場合、特異メソッド(self.で始まる)として定義する。

・モジュール内で定義したメソッドを、クラスのインスタンスメソッドとして取り込める
 →インスタンスメソッドとして取り込む場合、通常のメソッド(self.をつけない)として定義する。

・includeとextend
モジュール内で定義したメソッドを
includeはインスタンスメソッドとして取り込み
extendは特異メソッド(self.で始まる)として取り込む。

※参考サイト
http://pgnote.net/?p=107

■Procオブジェクト

・Proc.newとlambdaで作ったメソッドの違い
return時の挙動や、引数の数が一致しないとエラーとなる点など
lambdaの方が、通常のメソッドに近い動きをする。

・lambdaのシンタックスシュガーを用いた記述例

add = -> (x, y) {
x + y
}

del = -> (x, y) {
x - y
}

dev = -> {
6 / 2
}

x = 5
y = 2

p add.call(x, y)
p del.(x, y) #callなしでも可
p dev.call

小ネタですが、以上です。