せかいや

いまいるここを、おもしろく http://sekai-in-the-box.appspot.com/

【Ruby】パーフェクトRuby 学習感想文 ~第4章

それでは4章を読んでいきます。

(参考・経緯など)
パーフェクトRuby 学習感想文 ~はじめに



全体的に

4章はすごく読みやすかった!例が豊富で分かりやすい。



 

P116 やっぱり分からんインスタンス変数 @が付くの付かないの

P116のコード

■hoge5.rb

class Br
	def initialize
		@baked = false
	end
	
	def bake!
		@baked = true
		self
	end
	
	def baked?
		@baked
	end
end

b = Br.new
p b.baked? ←falseが表示

これはいいんだけれども。
P53には、

「Ruler#length= のようなメソッド呼び出しのselfは省略できません

とある。

上のコードではself がなくない?かわりに@が付いてる?

selfを使って書き換えてみる。

■hoge6.rb

class Br
	attr_accessor :baked
	
	def initialize
		self.baked = false
	end
	
	def bake!
		self.baked = true
		self
	end
	
	def baked?
		self.baked
	end
end

b = Br.new
p b.baked?

結果はfalse が出て同じ結果。
self.hoge と @hoge は同じなのかな。


 

P118 attr_accessorが分かりやすく書いてある

attr_accessor にインスタンス変数の名前を渡せばアクセサは自動的に定義されます

なるほど!attr_accessorも一つのメソッドだと理解すれば良かったのか。
この文でしっくりきました。
P52よりも、メソッドがリストで書いてあったりして、分かりやすい。


 

P133 extend もメソッドの一つなのか!

クラスもまたオブジェクトの1つですので、モジュールをextendすることができます。

という説明の中で以下のサンプルコードが。

o = Object.new
o.extend Greetable
class Alice
	extend Greetable

なるほどねー。上の例はメソッドだと分かったけれども、
言われると下の例もメソッドとしての挙動に見える。
いつも何となくextends していたけれども考えたら何かの挙動をあらわすメソッドなんだよね。。


4章は比較的さくさくと完了。