[#139] ruby 0.97 available — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろ@トヨタケーラムです.
1 message
1996/02/13
[#145] Re: The black face. — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろ@トヨタケーラムです.
1 message
1996/02/14
[#182] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:178] Re: DOS port
1 message
1996/02/20
[#184] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:181] Re: DOS port
1 message
1996/02/20
[#185] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:183] Re: DOS port
1 message
1996/02/20
[#196] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:183] Re: DOS port
1 message
1996/02/26
[#198] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:197] Re: DOS port
1 message
1996/02/26
[#201] Re: ruby for JPower — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろ@トヨタケーラムです.
1 message
1996/02/26
[ruby-list:191] TUTORIAL - method redefinition
From:
matz@... (Yukihiro Matsumoto)
Date:
1996-02-22 02:23:24 UTC
List:
ruby-list #191
まつもと ゆきひろ@トヨタケーラムです. 昨日話した,再定義の話の続きです. -- メソッドの再定義 サブクラスではスーパークラスのメソッドを再定義することによっ て,インスタンスの挙動を変更することができる.例えば,以下の ような例を考えてみよう. ruby> class Human ruby| def print_id ruby| print "I'm a man-kind.\n" ruby| end ruby| def trail_toll(age) ruby| print "割引料金でOKです.\n" if age < 12 ruby| end ruby| end Human ruby> Human.new.print_id I'm a man-kind. ruby> class Student1 ruby| def print_id ruby| print "I'm a student.\n" ruby| end ruby| end Student1 ruby> Student1.new.print_id I'm a student. nil print_idメソッドは再定義されているので,Student0での定義が呼 ばれている.しかし,メソッドを再定義する時に,再定義する前の メソッドを利用したい時がある.このような場合に使うのが, `super'だ.`super'が呼ばれると,再定義前のメソッドが呼ばれる. ruby> class Student2 ruby| def print_id ruby| super ruby| print "I'm a student too.\n" ruby| end ruby| end Student2 ruby> Student2.new.print_id I'm a man-kind. I'm a studnet too. nil `super'で呼び出された元のメソッドにはこのメソッドへの引数が そのまま引き渡される.もし,`super'に引数を渡せば,もとのメ ソッドがその引数で呼び出されることになる. ruby> class Student3 ruby| def train_toll(age) ruby| super(11) # 無条件で割引 ruby| end ruby| end Student3 ruby> Student3.new.train_toll(25) 割引料金でOKです. nil うーん,あまり良い例ではないが,感じはつかめたろうか.