SlideShare a Scribd company logo
名前:
日本語: グエン・ヴァン・ドゥック
ベトナム語: Nguyễn Văn Đức
ニックネーム : レン
年齢:23際
大学:ハノイ工科大学
趣味:スポーツ、PCゲーム
Ruby - under the hood
Problem
Ruby - under the hood
1. Method lookup - ancestor
2. How to change method lookup path
3. Summary
Method lookup
Rubyはメソッドを実行するとき、クラス自身、親クラス、親の親クラス、...と
いう順番でメソッドを探しに行きますよね?
何となくイメージはできるけど、実際にその動作をどうやって確認しますか?
それに、親や子供などの関係がなく、includeなどを使う場合に、メソッドを
実行する順番はどのようになるでしょうか?
Ancestors
Rubyには、ancestorsというメソッドがあります。
このメソッドは、関連する全てのクラスを配列にして返します。
ancestorsで得られたクラスの配列の中にメソッドが存在するか、順番に探し
て、見つけたらそのメソッドを実行します。
Ancestor
この順番によると、最初はBasicクラスでメソッドを探す
次はBlunch,JFC、。。
Ancestors
デフォルトだとancestorsで得られる配列の中で、一番最初に見つけたクラス
のメソッドが実行されます。
でも、他のモジュールのメソッドを実行したい場合、どうすれば良いのでしょ
うか?(ancestorsチェーンの順番を変えたい)
クラスで他のモジュールをincludeしたり、prependしたり、他のクラスを
extendしたりすると、ancestorsチェーンが変更されます。
Include
クラスで他のモジュールをIncludeすると、セルフクラスの次に入ります
Prepend
クラスで他のモジュールをprependすると、逆に,セルフクラスの前に入ります
Another
1. super
ancestorsチェーンの中で次に見つかった同じメソッド名を実行します。
Another
2. alias
Summary
これは、マジックでは、ありません。
ご清聴ありがとうございます。

More Related Content

More from basicinc_dev

More from basicinc_dev (14)

悪いRegexと良いregexと最良regex
悪いRegexと良いregexと最良regex悪いRegexと良いregexと最良regex
悪いRegexと良いregexと最良regex
 
Safe stringにgsubを実行できるように対応
Safe stringにgsubを実行できるように対応Safe stringにgsubを実行できるように対応
Safe stringにgsubを実行できるように対応
 
My sql viewに救われる(かもしれない)
My sql viewに救われる(かもしれない)My sql viewに救われる(かもしれない)
My sql viewに救われる(かもしれない)
 
川又康平 20160428
川又康平 20160428川又康平 20160428
川又康平 20160428
 
Zaru 20160428
Zaru 20160428Zaru 20160428
Zaru 20160428
 
Yamakado 20160428
Yamakado 20160428Yamakado 20160428
Yamakado 20160428
 
Have fun-with-ruby
Have fun-with-rubyHave fun-with-ruby
Have fun-with-ruby
 
君に届け!〜カテゴライズしたユーザーにメッセージを送る〜
君に届け!〜カテゴライズしたユーザーにメッセージを送る〜君に届け!〜カテゴライズしたユーザーにメッセージを送る〜
君に届け!〜カテゴライズしたユーザーにメッセージを送る〜
 
エンジニアがチームで数字を追って得たもの
エンジニアがチームで数字を追って得たものエンジニアがチームで数字を追って得たもの
エンジニアがチームで数字を追って得たもの
 
マーケティング視点でのデザイン
マーケティング視点でのデザインマーケティング視点でのデザイン
マーケティング視点でのデザイン
 
HUで6000万pvのトラフィックを捌くまでに起ったことをありのままに話すぜ
HUで6000万pvのトラフィックを捌くまでに起ったことをありのままに話すぜHUで6000万pvのトラフィックを捌くまでに起ったことをありのままに話すぜ
HUで6000万pvのトラフィックを捌くまでに起ったことをありのままに話すぜ
 
インフラ(Aws)覚えたいそんなあなたへ!
インフラ(Aws)覚えたいそんなあなたへ!インフラ(Aws)覚えたいそんなあなたへ!
インフラ(Aws)覚えたいそんなあなたへ!
 
Linuxのファイルシステムについて調べてみた
Linuxのファイルシステムについて調べてみたLinuxのファイルシステムについて調べてみた
Linuxのファイルシステムについて調べてみた
 
良いクラス設計とは?
良いクラス設計とは?良いクラス設計とは?
良いクラス設計とは?
 

Ruby under the hood

Editor's Notes

  1. khi gọi hàm thì trả về gì?
  2. この順番によると、最初はBasicクラスでメソッドを探す 次はBlunch,JFC、。。