[#49119] Ruby/Tk カーソル位置の移動方法について — masa masa <masamasa.ruby@...>
初めまして安藤と申します。
3 messages
2013/01/07
[#49131] [ANN] Ruby生誕20周年記念パーティのお知らせ — Kakutani Shintaro <shintaro@...>
一般社団法人日本Rubyの会のかくたにです。
6 messages
2013/01/15
[#49138] [ANN] Ruby 1.9.3 patchlevel 374 — "U.Nakamura" <usa@...>
Ruby ユーザーの皆様
3 messages
2013/01/17
[#49140] [ANN]Ruby-2.0.0-rc1, Ruby-1.9.3-p374 Windows用インストーラパッケージ — arton <artonx@...>
artonです。
7 messages
2013/01/18
[#49271] Re: [ANN]Ruby-2.0.0-rc1, Ruby-1.9.3-p374 Windows用インストーラパッケージ
— whiteleaf <2nd.leaf@...>
2013/03/12
whiteleaf です。
[#49272] Re: [ANN]Ruby-2.0.0-rc1, Ruby-1.9.3-p374 Windows用インストーラパッケージ
— Takahiro Kambe <taca@...>
2013/03/12
In message <CAGePti=3ArS8QeiAgt+B5t4StXdHZ6vuiz9d+=Ef-wk1M=WkDg@mail.gmail.com>
[#49148] Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます — Daisuke Yokotsuka <yokots_d@...3-net.ne.jp>
はじめまして。横塚と申します。
16 messages
2013/01/29
[#49150] Re: Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます
— Urabe Shyouhei <shyouhei@...>
2013/01/29
On 01/29/2013 06:35 PM, Daisuke Yokotsuka wrote:
[#49154] Re: Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます
— Daisuke Yokotsuka <yokots_d@...3-net.ne.jp>
2013/01/29
Shyouhei様
[#49156] Re: Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます
— Takeshi Iogawa <alpha@246.ne.jp>
2013/01/29
いおがわと申します。
[#49149] Re: Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます
— "Shota Fukumori (sora_h)" <sorah@...>
2013/01/29
sorahです。
[#49152] Re: Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます
— sunao tanabe <aib@...>
2013/01/29
たなべです。
[#49166] Enumerator#+ — 小田 利通 <oda@...>
13 messages
2013/01/31
[#49167] Re: Enumerator#+
— <alucky0707@...>
2013/01/31
あらきという者です。
[#49169] Re: Enumerator#+
— "H.Hiro" <main@...>
2013/01/31
SC5IaXJvGyRCJEckOSEjGyhCDQoNCj4gGyRCPi5FRCRIPz0kNyReJDkhIxsoQg0KPg0KPiAbJEI6
[ruby-list:49168] Re: Enumerator#+
From:
小田 利通 <oda@...>
Date:
2013-01-31 17:25:42 UTC
List:
ruby-list #49168
あらきさん、メールありがとうございます。
》Enumeratorは列挙自体を表すクラス(だと思う)なので、「列挙を合成する」よりは
》「列挙するものを予め合成してから列挙」の方が自然なのではないかと思います。
Enumerator は、ヘルプにあるように
Enumerable の機能を提供するためのラッパークラス
と 外部イテレータ
の2つの役割をするクラスです。
Enumerator を使う人は、Array を意識しているのではないかと思っています。
つまり、
[0,1,2,3,4,5].each {|i| puts i}
とするのを意識しながら
(0..5).each {|i| puts i}
と書いているじゃないかと。(違いは遅延評価ですね)
であれば、
([0,1,2]+[4,5]).each {|i| puts i}
に対応する
((0..2).each+(4..5).each).each {|i| puts i}
という表記があってもよいのではないかと思います。
Rangeオブジェクトの + もあっても良いとも思うのですが、
class Range
def +(other)
other=other.each unless other.kind_of?(Enumerator)
self.each + other
end
end
Rangeオブジェクト同士の加算の結果が Rangeオブジェクトでないというのは、
違和感があるので議論の余地があると思います。
》またEnumeratorに合成の機能を付けてしまうと、型を無視した合成が可能になってしまうのであまりよくないのではないでしょうか?
each メソッドがブロックに渡すのは、同じクラスのオブジェクトとは限りません。
つまり
[0, 1, "A", :foo].each {|i| puts i}
であっても問題ありません。
これは Array だけでなく Enumerator についても同様です。
小田 http://www.alato.ne.jp/oda