[#45298] グローバルにdefしたメソッドのスコープ — "takeru sasaki" <sasaki.takeru@...>
佐々木と申します。
10 messages
2008/08/06
[#45299] Re: グローバルにdefしたメソッドのスコープ
— rubikitch@...
2008/08/06
From: "takeru sasaki" <sasaki.takeru@gmail.com>
[#45318] Windows コマンドプロンプトで UTF-8を出力するには — Yuumi Yoshida <yuumi3@...>
おつかれさまです、 Yuumi3です。
11 messages
2008/08/08
[#45323] Re: Windows コマンドプロンプトで UTF-8を出力するには
— Yuumi Yoshida <yuumi3@...>
2008/08/08
こんばんは、Yuumi3です。
[#45324] tracer の出力が1.8,1.9では異なる。 — Kouya <kouyataifu4@...>
こんにちは、kouya です。
6 messages
2008/08/09
[#45334] def meth(*args, &block) の「*」「&」の呼び名は? — take_tk <ggb03124@...>
たけ(tk)です。
5 messages
2008/08/10
[#45356] nil.size — "ARAI Shunichi" <arai@...>
こんにちは、Rubyist九州の新井です。
9 messages
2008/08/19
[#45365] cygwinでRabyが動作しない。 — Kura syuu <kurasyuu@...>
初めまして 蔵修と申します。
11 messages
2008/08/22
[#45377] [ANN] REXMLのDoS脆弱性 — Shugo Maeda <shugo@...>
前田です。
5 messages
2008/08/23
[#45379] Design Patterns in Ruby — あひる <ahirusan@...>
あひる@Ducksysです。はじめまして。
5 messages
2008/08/23
[#45387] OpenSSL::CipherでのDESのやり方 — "Hideo Yamamoto" <deoohi@...>
はじめまして、山本と申します。
6 messages
2008/08/25
[#45393] JRubyについて&rubygemについて&RDTについて — Akira Hayakawa <ruby@...>
夜分遅くすいません。Akiraと申します。
10 messages
2008/08/25
[#45396] Re: JRubyについて&rubygemについて&RDTについて
— rubikitch@...
2008/08/25
From: Akira Hayakawa <ruby@i-mail.jp>
[#45397] Re: JRubyについて&rubygemについて&RDTについて
— Akira Hayakawa <ruby@...>
2008/08/25
ありがとうございます。
[#45398] Re: JRubyについて&rubygemについて&RDTについて
— rubikitch@...
2008/08/25
From: Akira Hayakawa <ruby@i-mail.jp>
[#45399] Re: JRubyについて&rubygemについて&RDTについて
— Akira Hayakawa <ruby@...>
2008/08/25
On Tue, 26 Aug 2008 08:27:24 +0900
[#45400] Re: JRubyについて&rubygemについて&RDTについて
— rubikitch@...
2008/08/26
From: Akira Hayakawa <ruby@i-mail.jp>
[#45406] Ruby1.9のインストールに失敗しました — Akira Hayakawa <ruby@...>
環境はUbuntu Linuxです。
7 messages
2008/08/27
[#45414] This is TestMail (テストメール) — "masataka kobayashi" <hotopoppo1@...>
I'm sorry . This is Test Mail
5 messages
2008/08/28
[#45427] Dir[] with **/ — Nobuhiro IMAI <nov@...>
いまいです。
8 messages
2008/08/29
[#45438] assert_equalの挙動について — Akira Hayakawa <ruby@...>
こんばんわ。Akiraです。
7 messages
2008/08/30
[#45447] sudo: gem: command not found — Akira Hayakawa <ruby@...>
EclipseのRDTはバグが多すぎて、DLTKはまだ開発途中
7 messages
2008/08/31
[#45448] Re: sudo: gem: command not found
— rubikitch@...
2008/08/31
From: Akira Hayakawa <ruby@i-mail.jp>
[#45449] やっぱりrubygemの仕組みがいまいち分かりません — Akira Hayakawa <ruby@...>
初期条件として、
8 messages
2008/08/31
[#45451] Re: やっぱりrubygemの仕組みがいまいち分かりません
— rubikitch@...
2008/08/31
From: Akira Hayakawa <ruby@i-mail.jp>
[#45454] Re: やっぱりrubygemの仕組みがいまいち分かりません
— Akira Hayakawa <ruby@...>
2008/08/31
On Sun, 31 Aug 2008 13:16:54 +0900
[ruby-list:45307] Re: グローバルにdefしたメソッドのスコープ
From:
take_tk <ggb03124@...>
Date:
2008-08-06 17:46:37 UTC
List:
ruby-list #45307
たけ(tk)です。
結局、るびきちさんの説明を同じになっちゃいましたね。
ポイントは
(1)トップレベルで定義されたメソッドは Objectクラスの関数型メソッド
(selfを付加することが禁止されたメソッド)となる。
(2)Objectクラスはすべてのクラスの上位クラスなので、或るクラスαのメソッ
ドAから、トップレベルで定義したメソッドBを呼び出すと、上位クラスのメソッ
ドとして、呼び出すことができる。
というのはよいとして、問題は、
(3)レシーバを省略してメソッドを呼び出すと、その時点での self がレシー
バとなる。
(4)呼び出されたメソッドの内部での self は呼び出し時のレシーバである。
というルールが加わるので、
(5)或るクラスαのメソッドAからトップレベルで定義されたメソッドBを呼
び出すと、呼び出されたメソッドBの内部での self は、トップレベル(main)
ではなく、呼び出したメソッドAでの self と同じになる。
(6)なので、トップレベルのメソッドBからトップレベルの別のメソッドCを
呼び出すように書いてあっても、呼び出したメソッドAのクラスαやその上位ク
ラス(Objectにいたる前の上位クラス)に同名のメソッドがある場合には、トッ
プレベルのメソッドCは呼び出されれないことになる。
(あってますかね?)
−−−−
ちなみに、クラスメソッドでも同様です。ClassもObjectの継承クラスなので。
def bar(e,f)
"global bar(#{e},#{f})"
end
def hello(c,d)
p self #=> Poo # hello が Poo.baz から呼ばれたときの self は Poo
bar(c,d) #=> hello が Poo.baz から呼ばれたときには Poo.bar を呼び出す。
end
class Poo
def self.bar(i,j)
"Poo.bar(#{i},#{j})"
end
def self.baz
hello(3,4)
end
end
p Poo.baz # => "Poo#bar(3,4)"
take_tk = kumagai hidetake