感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Rubyのクラスとメソッド、命名規則。

<スポンサーリンク>

Rubyの標準的な命名規約

・述語メソッド(真偽を戻すメソッド)
Rubyでは・・・
末尾に?をつける
String#empty?

Javaでは・・・
isEmptyとはhasError。

・破壊的メソッド(オブジェクトの内容を入れ替えてしまうようなメソッド)の末尾には!をつける
String#upcase!
みたいに。

・属性設定メソッド(Javaでいうところのセッター)の末尾には=をつける
これはまだしっくりきていないのだけど、末尾に=をつけるみたい。
IO#pos=
のように。

Rubyのメソッド

Rubyのメソッドの呼び出しは以下の構文。

オブジェクト.メソッド名(引数1,引数2・・・)

Rubyでクラスを作ってみる。

class Person
	def initialize(myname="hoge")
		@name = myname
	end

	def name
		return @name
	end

	def name=(value)
		@name = value
	end

	def greet()
		print("hello!",name, "\n")
	end
end

sho = Person.new("sho322")
sho.greet()

hoge = Person.new();
hoge.greet()

hoge.name = "mizky"
hoge.greet()

実行結果は以下の通り。

hello!sho322
hello!hoge
hello!mizky

Rubyでは、class名は必ず大文字で始める。
上の例では

def name=(value)
    @name = value
end

というようにセッターメソッドを作っていて、そうすると、使う側としては

hoge.name = "mizky"

というように使うと、nameに値を設定することができる。
ただし、この辺はアクセスメソッドを使えばもっと楽に使える。
以下の記述をガバッと消して・・・

	def name
		return @name
	end

	def name=(value)
		@name = value
	end

以下のようにする

	attr_accessor :name

これだけ。
こうすると、さっきと全く変わらず、セッター、ゲッターを利用することができる。

読んだ本

たのしいRuby 第3版

たのしいRuby 第3版


Ruby入門のぶっちぎりの定番。
パーフェクトRuby発売に備えてしっかり復讐しておく。

感謝のプログラミング

今回で感謝のプログラミングは【552時間目】
10000時間まで、あと【9448時間】