[#49193] [ANN] Ruby 2.0.0-p0 released — Yusuke Endoh <mame@...>

こんにちは。Ruby 2.0.0-p0 をリリースします。

14 messages 2013/02/24
[#49196] [ANN]Ruby-2.0.0-p0 mswin32版 MSI was Re: [ANN] Ruby 2.0.0-p0 released — arton <artonx@...> 2013/02/24

artonです。

[#49216] Windows用 インストーラ無しパッケージの需要について (Re: [ANN]Ruby-2.0.0-p0 mswin32版 MSI was Re: [ANN] Ruby 2.0.0-p0 released) — Takeshi Iogawa <alpha@246.ne.jp> 2013/02/27

いおがわと申します。 Ruby2.0の正式リリースおめでとうございます。

[ruby-list:49172] Re: Enumerator#+

From: 小田 利通 <oda@...>
Date: 2013-02-01 02:49:10 UTC
List: ruby-list #49172
近永さん、こんにちは。小田です。

》横から揚げ足取りですみません、

歓迎です。私自身も投稿してから、ちょっと間違えたなと思っていました。
 (0..5) は Enumeratorオブジェクト ではありません。

Enumerator が、
     Enumerable の機能を提供するためのラッパークラス
  と 外部イテレータ
の2個の機能があるのに対して、Range は
     Enumerbale を利用する機能  Range#each, Range#step など
  と 範囲の中と外を区別する機能  Range#include? など
があると思います。

そうやって考えると、(class) Enumerator#+ でやるか検討していることは、
実は (module) Enumerable で実現すべきなのかもしれません。

module Enumerable
  def followed_by(other)  ## 名前は適当だと思っていない
    Enumerator.new {|y|
      self.each {|i| y<<i}
      other.to_enum.each {|i| y<<i}
    }
  end
end

p (0..2).followed_by(4..5).to_a  # => [0, 1, 2, 4, 5]
p (0..6).step(2).followed_by(3.times).to_a   # => [0, 2, 4, 6, 0, 1, 2]

p (0..2).followed_by(4..5).to_a  # => [0, 1, 2, 4, 5]
    
ここまで書いても、一度不採用になった機能を再度要望するほどのことはないように
思っています。


In This Thread