[#30408] Ruby 1.8.6 preview2 has been released — "Akinori MUSHA" <knu@...>

 Ruby 1.8.6 preview2 をリリースしました。

20 messages 2007/02/24
[#30414] fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released) — Hidetoshi NAGAI <nagai@...> 2007/02/25

永井@知能.九工大です.

[#30418] Re: fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released) — Nobuyoshi Nakada <nobu@...> 2007/02/25

なかだです。

[ruby-dev:30429] Re: Arrayのメソッド増強について

From: Minero Aoki <aamine@...>
Date: 2007-02-26 06:17:46 UTC
List: ruby-dev #30429
青木です。

On 2007/02/26, at 14:09, Tadashi Saito wrote:

> 斎藤と申します。Haskellを知らない素人がしゃしゃり出るの 
> もあれなのです
> が、知らない人間として考えたことを投稿してみます。

>> |--- Array#take {|item| .... }   別名案:take_while, slice{}
>
> takeだと、単語として抽象的過ぎないでしょうか。中身を「取って来 
> る」
> メソッドは既存の中にいくつもありますし。
>
> また、Haskellを知らない人に取っては類推も効かないと思い 
> ます。例えば take
> 追加後にRubyを勉強した人が fetch も勉強した後、 
> どっちがどっちか分からな
> くなりそうで心配です。

では、take_while (で、ブロック付きのみ) ならどうです 
か?


>> |--- Array#drop {|item| .... }   別名案:lstrip, drop_while,
>
> 上記のselectとの類比と同じく「重複のないreject」と 
> 見た時、やはり分かり辛
> いと思います。

> 上記2つのブロック付きの物については、青木さんは
>   ary.uniq.select {...}
> が長過ぎる(効率も悪そう)という意見なのだと推測しま 
> した。でしたらselect

いえ、それは違います。Array#drop は順番を保ったまま配列を
処理するために使うメソッドです。例えばメールの文字列を
行単位の文字列配列で持っているとき、

   body = lines.drop {|line| not line.strip.empty? }

と書くとメール本体 (の最初にセパレータの空行が付いたも 
の) が
得られるわけです。

まあ、この場合は Array#split のほうが明らかに便利で、

   header, body = lines.split(2) {|line| line.strip.empty? }

でヘッダとボディが得られます。

--
青木峰郎


In This Thread