From: Yukihiro Matsumoto Date: 2009-05-21T19:52:03+09:00 Subject: [ruby-dev:38516] Re: Enumerable#gather_each まつもと ゆきひろ@上海です In message "Re: [ruby-dev:38512] Re: Enumerable#gather_each" on Thu, 21 May 2009 16:28:17 +0900, Tanaka Akira writes: |In article , | Yukihiro Matsumoto 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 というのが、意味的に対応しない気がするというのが違和感の根源 のような気がします。 まつもと ゆきひろ /:|)