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

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

【プログラミング 35時間目】Rubyの繰り返しやメソッド、クラスについて

スポンサーリンク



break・・・繰り返しを中断し、繰り返しの中から抜ける
next・・・次の回の繰り返しに処理を移す
redo・・・同じ条件で繰り返しをやり直す

print "Sample of break\n"
i = 0
["hoge","fuga","foo","yah"].each do |msg|
	i += 1
	if i == 2
		break
	end
	p [i,msg]
end

print "\nnextの例:\n"
i = 0
["hoge","fuga","foo","yah"].each do |msg|
	i += 1
	if i == 3
		next
	end
	p [ i , msg]
end

print "\nredoの例:\n"
i = 0
["hoge","fuga","foo","yah"].each do |msg|
	i += 1
	if i == 3
		redo
	end
	p [ i, msg ]
end

■メソッド

・メソッドの呼び出しの構文
オブジェクト.メソッド名(引数1,引数2,・・・)

・メソッドを実行することを「オブジェクトにメッセージを送る」「オブジェクトはメッセージを受け取る」という。

Rubyのメソッドはレシーバによって、3種類に分かれる。
インスタンスメソッド
・クラスメソッド
・関数的メソッド

・メソッドの定義
def メソッド名(引数1,引数2・・・)
実行したい処理
end

■クラス
・クラスとはオブジェクトの種類を表すもの

新しいオブジェクトを生成するには、各クラスのnewメソッドを使う

ary = Array.new

オブジェクトがどのクラスに属しているかを知るには、classメソッドを使う

ary = []
str = "Hello"
p ary.class
p.str.class

オブジェクトがあるクラスのインスタンスかどうかを判断するには、instance_of?メソッドを使う。

ary = []
str = "hello"
p ary.instance_of?(Array)
p str.instance_of?(String)

Rubyのinitializeメソッドというのは、Javaでいうコンストラクタに似ている。
initializeは、newメソッドによってオブジェクトを生成すると、このメソッドが呼ばれる仕組みになっている。

@(アットマーク)で始まる変数はインスタンス変数という。
ローカル変数はメソッドごとに異なる変数として扱われるが、
インスタンス変数は、同じインスタンス内であればメソッド定義を越えて、その値を参照したり変更したりできる。
初期化されていないインスタンス変数を参照するとnilが得られる。
インスタンス変数はインスタンスごとに違う値を持つことができる。
ローカル変数はメソッド呼び出しごとに新しく割り当てられる。そのため、メソッドを抜けると値が消えてしまう。

Rubyでクラスを利用する例

class Person
	
	def initialize(myname="mizky")
		@name = myname
	end
	
	def sayHello(msg)
		print msg," everyone, I'm ",@name,".\n"
	end
end

mizky = Person.new
yuki  = Person.new("yuki")
naoki = Person.new("naoki")

mizky.sayHello("ohayo!")
naoki.sayHello("yo!")
yuki.sayHello("yah")

結果は

ohayo! everyone, I'm mizky.yo! everyone, I'm naoki.yah everyone, I'm yuki.
C:\Users\Desktop\02.コーディング\05.Ruby>
C:\Users\Desktop\02.コーディング\05.Ruby>ruby class_test.rb
ohayo! everyone, I'm mizky.
yo! everyone, I'm naoki.
yah everyone, I'm yuki.