[#42194] Enhancing Numeric#step — "Akinori MUSHA" <knu@...>

 Numeric#step の仕様の拡張を提案します。

26 messages 2010/09/08
[#42196] Re: Enhancing Numeric#step — Yukihiro Matsumoto <matz@...> 2010/09/08

まつもと ゆきひろです

[#42200] Re: Enhancing Numeric#step — "Akinori MUSHA" <knu@...> 2010/09/08

At Wed, 8 Sep 2010 22:46:57 +0900,

[#42204] Re: Enhancing Numeric#step — Yukihiro Matsumoto <matz@...> 2010/09/09

まつもと ゆきひろです

[#42232] 1.9.2 readline can't handle cursorkeys, mbcs chars etc (msvcrt) — arton <artonx@...>

artonです。

11 messages 2010/09/10

[#42269] [Ruby 1.9-Bug#3836] Kernel.system, spawnがスペースを含むパスで動作しない — Hiroki Najima <redmine@...>

チケット #3836 が更新されました。 (by Hiroki Najima)

12 messages 2010/09/16
[#42270] WindowsでのKernel.systemの挙動、一貫性について — NAJIMA Hiroki <h.najima@...> 2010/09/16

名島(Nazy)と申します。

[#42310] ビジースレッドがあるとコンテキストスイッチが起きづらくなる — kuwamoto shintaro <beuniv@...>

こんにちは。

9 messages 2010/09/29
[#42315] [bug:trunk] ビジースレッドがあるとコンテキストスイッチが起きづらくなる — "U.Nakamura" <usa@...> 2010/09/30

こんにちは、なかむら(う)です。

[ruby-dev:42204] Re: Enhancing Numeric#step

From: Yukihiro Matsumoto <matz@...>
Date: 2010-09-09 00:59:45 UTC
List: ruby-dev #42204
まつもと ゆきひろです

In message "Re: [ruby-dev:42200] Re: Enhancing Numeric#step"
    on Thu, 9 Sep 2010 00:09:52 +0900, "Akinori MUSHA" <knu@iDaemons.org> writes:
|> |なおかつ増分のみの指定もできるように疑似キーワード引数を導入して
|> |みました。
|> |
|> |1.step {|i| ... }               # i = 1, 2, 3, ...
|> |-1.step(by:-1) {|i| ... }      # i = -1, -2, -3, ...
|> |1.0.step(by: 0.1, to: 2.0).to_a # [1.0, 1.1, ..., 2.0] (余談:誤差に注意)
|> |2.step(by:2).take(100)          # [2, 4, 6, ..., 200]
|> |
|> | キーワードを by: と to: にしたので、従来のように順序で意味を
|> |表すより読みやすいと思います。いかがでしょうか。
|>
|> キーワード引数を付けるなら、stepよりはtoの方が向いているケー
|> スもありそうな気がします。結局stepという名前を受け入れられる
|> かどうかがポイントですね。
|
| 「stepよりはtoの方が向いているケースもありそう」の意味が取れ
|ませんでした。逆かな?(でも 1.step(step: 2) は重言すぎる…)

たとえば

  1.0.step(by: 0.1, to: 2.0).to_a # [1.0, 1.1, ..., 2.0] (余談:誤差に注意)

は

  1.0.to(2.0, by: 0.1).to_a

の方がより読みやすい記法のような気がした、という意味でした。

| 上限を指定しなかったらずっと繰り返すのは自然だと思いますし、
|日頃から 1.step(10, 2) という表現を読みづらく感じていたので、
|今回の提案に至りました。

一晩考えて、stepメソッドへの拡張そのものには賛成しようと思い
ました。ただ、今後キーワード引数を取るメソッドが増加すること
が容易に想像できますので、C APIでもキーワード引数に対応した
いと思います。

たとえば、

  rb_scan_args(argc, argv, "02:", &limit, &step, &kw);

でキーワード辞書を取れたり、

  rb_scan_keywords(kw, "by", &step, "to", &limit, NULL);

で、キーワード辞書を分解したりするようなAPIはどうだろうかと
考えています。

このようなAPIをベースにstep拡張を取り込みたいのですが、どの
ような手順で行いましょうか。私がまずC APIを作って、武者さん
がそれに対応したstepパッチをコミットするとかですかね。

# いつ私の時間がとれるかが課題だけど。

                                まつもと ゆきひろ /:|)

In This Thread