[#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:42647] Re: Enumerable#categorize

From: SASADA Koichi <ko1@...>
Date: 2010-11-27 15:02:28 UTC
List: ruby-dev #42647
 ささだです。

(2010/11/27 23:19), Yukihiro Matsumoto wrote:
>   h = ary.xxx{|e| [e[1],e[0]]}
>   #=> {"Yukihiro Matsumoto"=>["matz"],
>        "Nobuyoshi Nakada"=>["nobu"],
>        "Tanaka Akira"=>["akr"],
>        "Usaku NAKAMURA"=>["usa"],
>        "NARUSE, Yui"=>["naruse"],
>        "SASADA Koichi"=>["ko1"]}

 この xxx について、just idea なんですが、

- Enumerable#map に第一引数を渡せるようにする
  - 第一引数に << していく
  - 省略されれば []
- Hash#<< を作る

ってのはどうでしょうか。本当に思いつきなので、きっと駄目なところがたくさ
んありそうですが。


class Hash
  def <<(arg)
    k, v = *arg
    self[k] = v
  end
end

module Enumerable
  def map container = []
    self.each{|e|
      container << yield(e)
    }
    container
  end
end

class Array
  remove_method :map
end

ary = [
  ["matz", "Yukihiro Matsumoto"],
  ["nobu", "Nobuyoshi Nakada"],
  ["akr", "Tanaka Akira"],
  ["usa", "Usaku NAKAMURA"],
  ["naruse", "NARUSE, Yui"],
  ["ko1", "SASADA Koichi"]
]


# これまでの map はそのまま
p ary.map{|e|
  [e[0], e[1]]
}

# Hash が作れる
p ary.map({}){|e|
  [e[0], e[1]]
}

# 既存のデータも渡せる
p ary.map({'znz' => 'Kazuhiro NISHIYAMA'}){|e|
  [e[0], e[1]]
}


-- 
// SASADA Koichi at atdot dot net

In This Thread