4月 7th, 2008at 15:56

Tags:

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つだけ指定可)

特異メソッド定義 

クラスメソッドの定義 

呼び出し制限 

定義に関する操作 

このエントリーをはてなブックマークに追加