[#38392] Enumerable#gather_each — Tanaka Akira <akr@...>

ときに、複数行をまとめて扱いたいことがあります。

47 messages 2009/05/09
[#38394] Re: Enumerable#gather_each — ujihisa <ujihisa@...> 2009/05/09

ujihisaと申します。

[#38400] Re: Enumerable#gather_each — Yukihiro Matsumoto <matz@...> 2009/05/09

まつもと ゆきひろです

[#38399] Re: Enumerable#gather_each — "Akinori MUSHA" <knu@...> 2009/05/09

At Sat, 9 May 2009 15:30:20 +0900,

[#38405] Re: Enumerable#gather_each — Tanaka Akira <akr@...> 2009/05/10

In article <86r5yy2nrg.knu@iDaemons.org>,

[#38417] Re: Enumerable#gather_each — "Akinori MUSHA" <knu@...> 2009/05/10

At Sun, 10 May 2009 10:08:47 +0900,

[#38524] [Bug #1503] -Kuをつけた時、/[#{s}]/n と Regexp.new("[#{s}]",nil,"n") で実行結果が異なる — sinnichi eguchi <redmine@...>

Bug #1503: -Kuをつけた時、/[#{s}]/n と Regexp.new("[#{s}]",nil,"n") で実行結果が異なる

8 messages 2009/05/22

[ruby-dev:38516] Re: Enumerable#gather_each

From: Yukihiro Matsumoto <matz@...>
Date: 2009-05-21 10:52:03 UTC
List: ruby-dev #38516
まつもと ゆきひろ@上海です

In message "Re: [ruby-dev:38512] Re: Enumerable#gather_each"
    on Thu, 21 May 2009 16:28:17 +0900, Tanaka Akira <akr@fsij.org> writes:

|In article <E1M6RQS-0004aW-9N@x61.netlab.jp>,
|  Yukihiro Matsumoto <matz@ruby-lang.org> writes:
|
|> slice_byというメソッド名に異論はありません。
|> :_separatorとか:_aloneとかはちょっと違和感があります。
|> ドキュメントに例が載っていないからかもしれません。
|
|:_separator と nil は同じ機能で、nil を使う例は載っています。
|:_separator に書き換えるとこうなります。
|
|     sep = "-"*72 + "\n"
|     IO.popen("svn log README") {|f|                 
|       f.slice_by {|line|
|         line != sep || :_separator
|       }.each {|_, lines|
|         pp lines
|       }      
|     }
|
|なお、separator という語を選ぶにあたっては delete や reject
|などいくつか考えましたが、入力を破壊的に書き換えるものではな
|いという点と、入力の要素が単に消えるのではなく、その要素をは
|さんだ要素をまとめることはないという点を考慮しています。
|
|:_alone の例だと、たとえば、chkbuild のログを diff するの
|に必要になったものを簡略化すれば、
|
|  pat = /\A[A-Z][A-Za-z0-9_]+(::[A-Z][A-Za-z0-9_]+)*\#/
|  open(filename) {|f|
|    f.slice_by {|line| pat =~ line ? $& : :_alone }.each {|key, lines|
|      if key != :_alone
|        print lines.sort.join('')
|      else
|        print lines.join('')
|      end
|    }
|  }
|
|というところでしょうか。

これについては反対しませんので、これらもRDocに追加してもらえ
ませんか。ちょっと冗長過ぎるかなあ。

|例が載っていない他に違和感はありますか?

そうですね。_by系でシンボルで制御すると言う前例がない、とい
うこと以外には、気になる点はありません。

|> slice_beforeにも違和感があります。
|> ruby-coreで聞いてみるべきなのかしら。それともbikeshedで収拾
|> がつかなくなっちゃうかしら。
|
|どのような違和感ですか?
|
|そこが不明だと、どういうものを狙って探せばいいのかわかりませ
|ん。

そうですよね。対応するものがslice_byである時に、_byと_before
というのが、意味的に対応しない気がするというのが違和感の根源
のような気がします。

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

In This Thread