[#42564] [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Makoto Kishimoto <redmine@...>

Feature #4043: =E3=82=B0=E3=83=AD=E3=83=BC=E3=83=90=E3=83=AB=E9=96=A2=E6=95=

15 messages 2010/11/11
[#42774] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Yukihiro Matsumoto <matz@...> 2010/12/16

まつもと ゆきひろです

[#42834] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp> 2010/12/21

きしもとです

[#42835] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Yukihiro Matsumoto <matz@...> 2010/12/21

まつもと ゆきひろです

[#42838] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp> 2010/12/21

きしもとです

[#42845] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Yukihiro Matsumoto <matz@...> 2010/12/21

まつもと ゆきひろです

[#42577] Rubyのバグレポートのガイドライン — "Shota Fukumori (sora_h)" <sorah@...>

sora_hです。

11 messages 2010/11/15
[#42588] Re: Rubyのバグレポートのガイドライン — Yugui <yugui@...> 2010/11/18

2010/11/15 Shota Fukumori (sora_h) <sorah@tubusu.net>:

[#42638] Enumerable#categorize — Tanaka Akira <akr@...>

enumerable から hash を生成するメソッドとして

25 messages 2010/11/27
[#42643] Re: Enumerable#categorize — Yukihiro Matsumoto <matz@...> 2010/11/27

まつもと ゆきひろです

[ruby-dev:42641] Re: Enumerable#categorize

From: Urabe Shyouhei <shyouhei@...>
Date: 2010-11-27 11:05:01 UTC
List: ruby-dev #42641
(2010/11/27 19:51), Tanaka Akira wrote:
> 2010年11月27日19:37 Urabe Shyouhei <shyouhei@ruby-lang.org>:
>>> 幸いにして第一要素から第二要素へのハッシュは Hash[ary] で作れるようになったので、
>>> 逆の第二要素から第一要素へのハッシュについて考えましょう。
>>> (同姓同名を考慮して、ハッシュの値は第一要素の配列としましょう)
>>>
>>> これを得るには現在、残念な事に、自分でループを書く必要があります。
>>
>> この状況を改善するという選択肢はありませんか。つまりHash[ary].invertがもう少し
>> 賢くなればいいんですよね?
> 
> いや、もっと一般的な事を考えています。
> CSV から読み込む、という状況に触れたのもそうなのですが、
> 一般にフィールド (カラム) はふたつとは限りません。
> また、必ずユニークなキーがあるとも限りません。
> 
> それもあって、最初にデータがハッシュとして存在する、
> という仮定はしたくありません。

ハッシュではないものをHashで扱おうという発想がそもそも破綻してませんか

>>> 引数の 1, 0 が何を意味するかというと、enumerable の要素から
>>> ハッシュのキー及び値を取り出す指定です。
>>> 具体的には ary の各要素に対し、[] メソッドを呼び出し、
>>> その引数に引き渡してキー/値を得ます。
>>> つまり、["matz", "Yukihiro Matsumoto"][1] として "Yukihiro Matsumoto" というキーを得て、
>>> ["matz", "Yukihiro Matsumoto"][0] として "matz" という値を得るわけです。
>>
>> 分かりにくすぎると思います。
> 
> 0, 1 というインデックスがわかりにくい、という意図でしょうか?

いいえ、一番目の引数がkeyで二番目の引数がvalueであるというのが字面から分かりづ
らいと思います。

たとえばary.categorize(0 => 1)とか書いてあれば私にとっては多少は分かりやすくな
ります。あるいはary.categorize(key: 0, value: 1)とか。

> 
>> これが存在すること自体には特に反対しませんが、ちょっと抽象的すぎて逆に使いづら
>> いと感じます。最終的にこのアルゴリズムに落ちたとしても、ユーザーにはもう少し使
>> いやすいAPIを提供すべきでしょう。たとえば数を数える専用のメソッドを作るとか。
> 
> ひとつひとつ進めていこうかと思っていて、
> 値を配列にする必要がない場合と、
> 数を数えるものについては、
> また後で (気が向いたときに) やろうかと思っていました。

これらについても反対ではありません。

In This Thread