Ruby1.8.5でクラスやメソッドの定義

感想おまちしてます!

クラス定義 

  • インスタンスを作成できる
  • include による Mix-in(モジュールをクラスに混ぜること)ができる
class ChildClass < TestClass
def print() #実はオーバーライドしている
puts "this is child parint method"
puts TEISU #実は親クラスに定義されている定数
end
end

cls = ChildClass.new
cls.print()

実行結果

this is child parint method
定数

クラスの再定義 

class Red
def print()
puts "red"
end
end

class Blue
def print()
puts "blue"
end
end


class Pallet < Red
#なんもなし
end

#定義を追加している
class Pallet
def printJa()
puts "赤"
end
end

pallet = Pallet.new
pallet.print()
pallet.printJa()

#スーパークラスを変えたので上書きされる(エラーが発生するのだ)
class Pallet < Blue
#なんもなし
end

pallet = Pallet.new
pallet.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 ModuleTest
print() #いきなりメソッド呼び出し

class Use
include ModuleTest
end

use = Use.new
use.print()

実行結果

堀北真希
堀北真希

メソッド定義

class MethodTest2

def print0
puts "print method"
end

def print1 message #括弧はあってもなくても
puts message
end

def print2(one, two)
puts "print2(#{one}, #{two})"
end
end

cls = MethodTest2.new
cls.print0
cls.print0()
cls.print1("メッセージどす")
cls.print1 "メッセージどす" #括弧はあってもなくても
cls.print2(1, 2)
#cls.print2 1 2 <これはだめ

実行結果

print method
print 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.new
cls.print("風林火山")
cls.print2()
cls.print2("1っこめー")
cls.print2("1っこめー", "2こめー")

実行結果

風林火山なり
えいえい
えいえい1っこめー
えいえい1っこめー2こめー

&がついたときは

作成中ですわ

引数の順序 

  • デフォルト式のない引数(複数指定可)
  • デフォルト式のある引数(複数指定可)
  • * を伴う引数(1つだけ指定可)
  • & を伴う引数(1つだけ指定可)

特異メソッド定義 

クラスメソッドの定義 

呼び出し制限 

定義に関する操作