4月 7th, 2008at 15:56
Tags: Ruby
Ruby1.8.5でクラスやメソッドの定義
クラス定義
- インスタンスを作成できる
- include による Mix-in(モジュールをクラスに混ぜること)ができる
class ChildClass < TestClass def print() #実はオーバーライドしている puts "this is child parint method" puts TEISU #実は親クラスに定義されている定数 endend cls = ChildClass.newcls.print()
実行結果
this is child parint method定数
クラスの再定義
class Red def print() puts "red" endend class Blue def print() puts "blue" endend class Pallet < Red #なんもなしend #定義を追加しているclass Pallet def printJa() puts "赤" endend pallet = Pallet.newpallet.print()pallet.printJa() #スーパークラスを変えたので上書きされる(エラーが発生するのだ)class Pallet < Blue #なんもなしend pallet = Pallet.newpallet.print()pallet.printJa()
実行結果
red赤D:/daipresents/project/ruby/src/test/update_class.rb:30: superclass mismatch for class Pallet (TypeError)
モジュール定義
いまひとつ使い道がわからぬ。
- モジュールはインスタンスを持つことができない。
- モジュールは継承できない。
module ModuleTest def print() puts "堀北真希" end end include ModuleTestprint() #いきなりメソッド呼び出し class Use include ModuleTestend use = Use.newuse.print()
実行結果
堀北真希堀北真希
メソッド定義
class MethodTest2
def print0 puts "print method" end
def print1 message #括弧はあってもなくても puts message end
def print2(one, two) puts "print2(#{one}, #{two})" endend
cls = MethodTest2.newcls.print0cls.print0()cls.print1("メッセージどす")cls.print1 "メッセージどす" #括弧はあってもなくてもcls.print2(1, 2)#cls.print2 1 2 <これはだめ
実行結果
print methodprint methodメッセージどすメッセージどすprint2(1, 2)
仮引数
引数にデフォルト値を設定できるのだ。
class KariParam def print(message1, message2 = "なり") puts message1 + message2 end #def print(message1, message2 = "なり", message3) #これはだめ。デフォルト値以降は全部デフォルト設定しないとだめ #end
def print2(*param) #引数を可変長にしてみた puts "えいえい#{param}" end end
cls = KariParam.newcls.print("風林火山")cls.print2()cls.print2("1っこめー")cls.print2("1っこめー", "2こめー")
実行結果
風林火山なりえいえいえいえい1っこめーえいえい1っこめー2こめー
&がついたときは
作成中ですわ
引数の順序
- デフォルト式のない引数(複数指定可)
- デフォルト式のある引数(複数指定可)
- * を伴う引数(1つだけ指定可)
- & を伴う引数(1つだけ指定可)




