[#41918] [Feature #3647] Array#sample(n, replace=false) — Kenta Murata <redmine@...>

Feature #3647: Array#sample(n, replace=false)

11 messages 2010/08/03

[#41966] [Bug #3673] PTY.getpty with IO.pipe doesn't finish on FreeBSD — Yui NARUSE <redmine@...>

Bug #3673: PTY.getpty with IO.pipe doesn't finish on FreeBSD

9 messages 2010/08/10

[#41969] [Feature #3675] String#prepend, String#>> — Sora Harakami <redmine@...>

Feature #3675: String#prepend, String#>>

15 messages 2010/08/10
[#41976] Re: [Feature #3675] String#prepend, String#>> — Yukihiro Matsumoto <matz@...> 2010/08/10

まつもと ゆきひろです

[#41974] Re: [ruby-cvs:36157] Ruby:r28955 (trunk): * complex.c (nucomp_to_[ifr]): don't allow complex with in-exact — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

7 messages 2010/08/10

[#42003] WEBrickに関するセキュリティ修正 (CVE-2010-0541) — Hideki Yamane <henrich@...>

12 messages 2010/08/11

[#42090] Math::atan2(0, 0) on ruby 1.9.2 — KUBO Takehiro <kubo@...>

久保です。

18 messages 2010/08/22
[#42092] Re: Math::atan2(0, 0) on ruby 1.9.2 — Kenta Murata <muraken@...> 2010/08/22

=1B$B$`$i$?$G$9!#=1B(B

[#42166] Ruby'sライセンスの、BSDLとのデュアルライセンスへの変更 — "NARUSE, Yui" <naruse@...>

Ruby's ライセンスは BSDL と Ruby's のデュアルライセンスになります。

14 messages 2010/08/31

[ruby-dev:42051] Re: Procのブロック呼び出しメソッド名を自由に設定

From: SASADA Koichi <ko1@...>
Date: 2010-08-17 18:01:38 UTC
List: ruby-dev #42051
 ささだです.

(2010/08/17 14:13), Yukihiro Matsumoto wrote:
> | この話ってどうなりましたかね.結構,ほしいなぁ,と思う場面もあるんです
> |が.特殊な each を持つオブジェクトとか,クラス作るまでもないなぁ,みたいな.
> 
> うーん、Procオブジェクトをcall以外で呼び出せても良いとは思う
> んですが、何回考えても  lambda(:each){}  は受け入れられませ
> ん。たとえば、Procにcallの別名を加えるメソッドなら名前次第で
> は受け入れられそうな気がするのですが。あるいは、lambdaの代わ
> りに別名を持つProcを用意するメソッド。

 IRC で mrkn さんが :each.responder{...} という案を提案してくれました.

  :each.responder{
    d = Date.now
    5.times{ # 5日間
      yield(d); d += 1
    }
  }.map{|e|
    "Date: #{d}"
  }

 うーん,この例だと

  d = Date.new
  p 5.times.inject([]){|r, e|
    r << "Date: #{d + e}"
  }

でいいな.そもそも,Enumerable を include してないから map できない.

case obj
when (10 未満)
when 10..20
when 20 よりおおきい
end

とか書きたいときに,

case obj
when :===.responder{|e| e < 10}
when 10..20
when :===.responder{|e| 20 < e}
end

と書けるとか.いや,長くなってるじゃん.

case
when obj < 10
when (10..20).include?(obj)
when 20 < obj
end

(HalfRange とか,そういうクラスの導入もあり得るんじゃないの,
 という話も)


 他に,何かいい例は無いかな,ととりとめもなく.


# 今更だけど,each の話は generator 使えばいいだけのような気がする.

p Enumerator::Generator.new{|g|
  d = Date.new
  5.times{
    g.yield d
    d += 1
  }
}.map{|d|
  "Date: #{d}"
}

-- 
// SASADA Koichi at atdot dot net

In This Thread