[#3524] GC target (Re: [ruby-list:10035] Re: Ruby/Gtk text widget) — "D.Kanda" <MAP2303@...>
7 messages
1998/10/13
[#3525] Re: GC target (Re: [ruby-list:10035] Re: Ruby/Gtk text widget)
— matz@... (Yukihiro Matsumoto)
1998/10/13
まつもと ゆきひろです
[#3536] Re: [ruby-list:10256] Re: for が修飾子だったら — Junichi Kurokawa <jun@...>
Reply-To: ruby-devとしました。
15 messages
1998/10/22
[#3540] Re: [ruby-list:10256] Re: for が修飾子だったら
— Junichi Kurokawa <jun@...>
1998/10/23
>>>>> "Y" == Yukihiro Matsumoto <matz@netlab.co.jp> writes:
[#3543] Re: for が修飾子だったら
— ARIMA Yasuhiro <fit0298@...>
1998/10/23
Regard to "[ruby-dev:3540] Re: [ruby-list:10256] Re: for が修飾子だったら"
[#3551] [BUG?] gsub — Shin-ichro Hara <sinara@...>
原です。
10 messages
1998/10/27
[ruby-dev:3547] call iterator without block (Re: for が修飾子だったら)
From:
shugo@... (MAEDA Shugo)
Date:
1998-10-23 09:22:25 UTC
List:
ruby-dev #3547
前田です。
In message "[ruby-dev:3540] Re: [ruby-list:10256] Re: for が修飾子だったら"
Junichi Kurokawa <jun@mew.gol.com> wrote:
| Y> 「『foo.each;』に意味があるのか」というのは,どういう意味でしょう?
| Y> 改善の提案は歓迎しますが,一応,数年来の経験を通じて現在の文法は
| Y> おおむね良好であるという印象を持っています.いろいろ吟味した結果
| Y> 今のようになってるわけですし.
|
|foo.each;に何の意味があるんですか。
|
|1. 返り値は。たぶんnil。
|2. 副作用は。たぶん無し。
ひょっとして、
$ ruby -e 'p [].each'
とされて、エラーにならないために、イテレータとしてのeachとは別に
何もしないメソッドとしてeachが定義されていると勘違いされている
のではないでしょうか?
Array#eachはブロックが与えられることが期待されているメソッドで、
その定義は一つしかありません。
Array#eachの定義は、
def each
for i in 0..self.size-1
yield(self[i])
end
end
のようになっています。
# 実際にはCで記述されています。
$ ruby -e 'p [0].each'
のように空でない配列に対してeachを呼び出すと、
/tmp/rba00382:1:in `each': yield called out of iterator (LocalJumpError)
from /tmp/rba00382:1
のように表示され、ブロックを与えられなかった場合も、ブロックを与えた
場合と同じものが呼ばれていることがわかると思います。
$ ruby -e 'p [].each'
の場合は配列が空なので、yieldが呼ばれないためにエラーが起きないわけです。
--
前田 修吾 <shugo@aianet.ne.jp>