[#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:42200] Re: Enhancing Numeric#step

From: "Akinori MUSHA" <knu@...>
Date: 2010-09-08 15:09:52 UTC
List: ruby-dev #42200
At Wed, 8 Sep 2010 22:46:57 +0900,
matz wrote:
> In message "Re: [ruby-dev:42194] Enhancing Numeric#step"
>     on Wed, 8 Sep 2010 21:58:11 +0900, "Akinori MUSHA" <knu@iDaemons.org> writes:
>
> | 現在、 Numeric#step は limit を必須引数としているため、手軽に
> |無限数列を生成することができません。Float::INFINITY ないし 1/0.0
> |のような値を渡せば可能ではありますが、「1から上限なしでカウント
> |アップする」のようなよくある要件を満たす方法としては冗長です。
> |
> | そこで、上限(下限)なしでループするように limit も省略可能とし、
> |なおかつ増分のみの指定もできるように疑似キーワード引数を導入して
> |みました。
> |
> |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) は重言すぎる…)

> 個人的には違和感ありなんですが、stepを「進む」と動詞でとらえ
> るなら許容できるのかも。

 私はもともとその意味で捉えていました。増分指定は第二引数で、
しかも省略可能なので step を増分を意味する名詞と捉えるのは少々
不自然です。上限を指定する 1.step(10) が基本用法ですが、これは
「(1から)10まで進める(step to 10)」と読まれるでしょう。

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

--
Akinori MUSHA / http://akinori.org/

In This Thread