[#20475] Wrapping Regexp in C++/Windows — OZAWA Sakuro <crouton@...>

さくです。

15 messages 2000/02/03

[#20534] ftpmirror-1.2.2 で @homepage へ up 不可 — Hirokazu Kiuchi <kiuchi@...>

はじめまして、きうちです。

12 messages 2000/02/07

[#20554] エスケープされていないものだけを置換 — Ayanosuke <aya@...>

 館林と申します。

35 messages 2000/02/07
[#20563] Re: エスケープされていないものだけを置換 — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/02/07

なひです.

[#20598] — "okaukio+mls" <jtz4046@...6.mnx.ne.jp>

ruby-list@netlab.co.jp のみなさん こんにちは。

126 messages 2000/02/08
[#20600] Re: — "Y Kataoka" <kataoka@...> 2000/02/09

片岡と申します。

[#20620] Re: — "okaukio+mls" <jtz4046@...6.mnx.ne.jp> 2000/02/10

おかゆきおです。

[#20623] Re: How to run ruby — Masaki Suketa<CQN02273@...> 2000/02/11

助田です.最初からこのツリーちゃんと読んでなかったんですが...

[#20630] Re: How to run ruby — "okaukio+mls" <jtz4046@...6.mnx.ne.jp> 2000/02/11

おかゆきおです。

[#20633] Re: How to run ruby — Masaki Suketa<CQN02273@...> 2000/02/12

助田です.ちょっと長いです.

[#20640] Re: How to run ruby — "okaukio+mls" <jtz4046@...6.mnx.ne.jp> 2000/02/12

おかゆきおです。

[#20645] Re: How to run ruby — WATANABE Hirofumi <eban@...> 2000/02/12

わたなべです.

[#20653] Re: How to run ruby — 中村暁史 Nakamura Akifumi <BXQ04723@...> 2000/02/13

[#20655] Re: How to run ruby — OZAWA Sakuro <crouton@...> 2000/02/13

In article <38A6419D15E.469A.BXQ04723@nifty.ne.jp>,

[#20657] Re: How to run ruby — Fumitake Taniguchi <whom@...3.so-net.ne.jp> 2000/02/13

In <200002130938.SAA17120@rose.duelists.org>,

[#20658] Re: How to run ruby — OZAWA Sakuro <crouton@...> 2000/02/13

In article <200002131054.TAA09555@mail.fb3.so-net.ne.jp>,

[#20661] Re: How to run ruby — nobu.nakada@... 2000/02/13

なかだです。

[#20677] Re: How to run ruby — "Hideaki Takata" <hideakit@...3.dion.ne.jp> 2000/02/13

たかた@久しぶりの投稿です。

[#20691] Re: How to run ruby — "Hideaki Takata" <hideakit@...3.dion.ne.jp> 2000/02/14

たかたです

[#20736] Re: How to run ruby — "Hideaki Takata" <hideakit@...3.dion.ne.jp> 2000/02/15

たかたです

[#20746] Re: How to run ruby — "Hideaki Takata" <hideakit@...3.dion.ne.jp> 2000/02/15

たかたです

[#20765] Re: rbsh — rubikitch <rubikitch@...> 2000/02/16

From: "Hideaki Takata" <hideakit@d3.dion.ne.jp>

[#20783] Re: rbsh — 中村暁史 Nakamura Akifumi <BXQ04723@...> 2000/02/17

[#20777] Re: Where is http-access.rb? — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/02/16

なひです.

[#20792] Re: Where is http-access.rb? — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/02/17

なひです.

[#20625] druby で 3 つのプロセス間でオブジェクトをやり取りする — 堀川 久 <vzw00011@...>

 こんにちは。

12 messages 2000/02/11
[#20628] Re: druby で 3 つのプロセス間でオブジェクトをやり取りする — Masatoshi SEKI <m_seki@...> 2000/02/11

[#20638] Re: druby で 3 つのプロセス間でオブジェクトをやり取りする — 堀川 久 <vzw00011@...> 2000/02/12

 こんにちは。

[#20722] opttest.rb of optparse-0.6 — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp>

Toshです。

15 messages 2000/02/15

[#20737] Ruby/Gtk の CList にパッチ — YASUI Kentarow <kenyasui@...>

安井です。

14 messages 2000/02/15
[#20950] Re: Ruby/Gtk の CList にパッチ — Hiroshi IGARASHI <igarashi@...> 2000/02/22

いがらしです。返答が遅くなりすみません。

[#20955] Re: Ruby/Gtk の CList にパッチ — matz@... (Yukihiro Matsumoto) 2000/02/22

まつもと ゆきひろです

[#20821] method object — thitoshi@... (TAKAHASHI Hitoshi)

45 messages 2000/02/18
[#20824] Re: method object — Masahiro Suzuki <msuzuki@...> 2000/02/18

こんにちは。鈴木@仕事中です。

[#20827] Re: method object — thitoshi@... (TAKAHASHI Hitoshi) 2000/02/18

[#20829] Re: method object — matz@... (Yukihiro Matsumoto) 2000/02/18

まつもと ゆきひろです

[#20832] Re: method object — thitoshi@... (TAKAHASHI Hitoshi) 2000/02/18

[#20885] Re: collect + find_all ==> select ? — "H.TAKEI" <takei.hideaki@...> 2000/02/21

武井です。

[#20923] CUI library available in Ruby — Hideto ISHIBASHI <s34204@...>

石橋秀仁です。

15 messages 2000/02/22

[#20944] Hash#update について — Fuyuhiko Maruyama (丸山冬彦) <fuyuhik8@...>

丸山@東工大と申します。

32 messages 2000/02/22
[#20948] Re: Hash#update について — 中村暁史 Nakamura Akifumi <BXQ04723@...> 2000/02/22

[#20960] Re: Hash#update について — rubikitch <rubikitch@...> 2000/02/23

From: 中村暁史 Nakamura Akifumi <BXQ04723@nifty.ne.jp>

[#20976] Re: Hash#update について — Fuyuhiko Maruyama (丸山冬彦) <fuyuhik8@...> 2000/02/23

丸山です。

[#20977] Re: Hash#update について — matz@... (Yukihiro Matsumoto) 2000/02/23

まつもと ゆきひろです

[#20984] Re: Hash#update について — Fuyuhiko Maruyama (丸山冬彦) <fuyuhik8@...> 2000/02/23

丸山です。

[#20985] Re: Hash#update について — matz@... (Yukihiro Matsumoto) 2000/02/23

まつもと ゆきひろです

[#20959] Ruby/GTK tの動かし方 — 中村暁史 Nakamura Akifumi <BXQ04723@...>

18 messages 2000/02/23
[#21011] Re: Ruby/GTK tの動かし方 — Yasushi Abe <yasushi@...> 2000/02/24

こんにちわ、阿部です。

[#20965] cgi.rb BUG? — rubikitch <rubikitch@...>

るびきちです。

33 messages 2000/02/23
[#20978] Re: cgi.rb BUG? — nobu.nakada@... 2000/02/23

なかだです。

[#21023] Re: cgi.rb BUG? — Kazuhiro Nishiyama <nishiyama@...1.tiki.ne.jp> 2000/02/24

nobu.nakada@nifty.ne.jp wrote:

[#21025] Re: cgi.rb BUG? — nobu.nakada@... 2000/02/24

なかだです。

[#21052] tempfile.rb BUG — Kazuhiro Nishiyama <nishiyama@...1.tiki.ne.jp> 2000/02/26

nobu.nakada@nifty.ne.jp wrote:

[#20992] GPIB driver その後 — Makoto Tagusari <mtag@...2.so-net.ne.jp>

皆さん今晩は、田鎖です。

15 messages 2000/02/23
[#21012] Critical Block (Re: GPIB driver その後) — Hideto ISHIBASHI <s34204@...> 2000/02/24

石橋秀仁です。

[#21028] CGI.rb のドキュメント探してます — Takumi Nakamura <chapuni@...>

 はじめまして。福岡在住の中村と申します。

16 messages 2000/02/25
[#21054] Re: CGI.rb のドキュメント探してます — 堀川 久 <vzw00011@...> 2000/02/26

 こんにちは。

[#21093] RD with URL — rubikitch <rubikitch@...>

るびきちです。

25 messages 2000/02/29
[#21095] Re: RD with URL — nobu.nakada@... 2000/02/29

なかだです。

[#21098] Re: RD with URL — rubikitch <rubikitch@...> 2000/02/29

From: nobu.nakada@nifty.ne.jp

[#21100] Re: RD with URL — nobu.nakada@... 2000/02/29

なかだです。

[#21101] Re: RD with URL — rubikitch <rubikitch@...> 2000/02/29

From: nobu.nakada@nifty.ne.jp

[#21103] Re: RD with URL — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/02/29

Toshです。

[#21105] Re: RD with URL — rubikitch <rubikitch@...> 2000/02/29

From: Toshiro Kuwabara <toshirok@yb3.so-net.ne.jp>

[#21108] Re: RD with URL — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/02/29

Toshです。

[#21110] rubyman ? (Re: RD with URL) — Koji Arai <JCA02266@...> 2000/02/29

新井です。

[#21111] Re: rubyman ? (Re: RD with URL) — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/02/29

Toshです。

[ruby-list:21039] Re: Hash#update について

From: Fuyuhiko Maruyama (丸山冬彦) <fuyuhik8@...>
Date: 2000-02-25 16:20:42 UTC
List: ruby-list #21039
丸山です。

ちょっと説明不足と誤解があるようです。

まず、私の求めているものは、mergeと呼ぶ方がふさわしいものです。それで、
なぜupdateメソッドの仕様を変えるという提案になったかというと、マニュア
ルのupdateメソッドの説明が、「Hashの内容をマージする。重複するキーに対
応する値は、otherの内容で上書きされます。」となっていたからです。それ
で、updateメソッドがマージという操作を行うものなら、キーが重複している
部分の処理は、ユーザが指定できた方が良いのではないかと考えました。

CVSに例えると、checkoutされたファイルをcommitした時に、conflictがなけ
れば自動的にマージされ、conflictがある場合には、その部分はユーザが手動
でマージする必要がありますよね。つまり、conflictがあった場合にのみその
部分の処理がユーザに委ねられるわけです。このCVSのconflictというのが、
Hash#updateにおけるキーの重複に相当すると思ってください。

私の提案の肝は、CVSの例において手動でマージするという手順に相当する部
分を、Hash#updateに与えたブロックに委ねられれば便利だなというところに
あります。

At Thu, 24 Feb 2000 01:10:32 +0900,
matz@netlab.co.jp (Yukihiro Matsumoto) wrote:
> それならそれでhash2は要らないのではと思います。Array#filter
> 相当のものがあれば良いのでは?
> 
>   hash1.filter{|k,v| hash2.key?(k) ? hash[k] : v }

マニュアルによるとArray#filterは、「配列の各要素をブロックの評価値と置
き換える。」とあります。この記述から類推すると、「Hashの各key-valueの
組について、ブロックを評価し、その評価値をself[key]に格納する」という
意味だろうと思います。

>   hash1.filter{|k,v| hash2.key?(k) ? hash[k] : v }
                                       ^^^^これは多分hash2ですよね?
これ(このサンプルコード)で実現されるのは、hash1に含まれるkey-valueの組
の内、hash2に同じkeyがあるものについてのみ、hash1[key]にhash2[key]を格
納することだと思います。

まつもとさんの提案したコードをもっと具体的に考えてみると、以下のような
ものだと思います。

hash1 = { 1=>2, 2=>4, 3=>6 }
hash2 = { 3=>8, 4=>16 }
hash1.filter{|k,v| hash2.key?(k) ? hash2[k] : v }
を実行すると、hash1の中身が{1=>2, 2=>4, 3=>8}となる。


えーと、ここに、誤解があるようです。私の提案はこのような動作ではないで
す。これは、現在のupdateとは、全く似ても似つかない動作ですよね。さすが
にこんな変更を既存のメソッドと置き換えてくれと言うような提案はしていま
せん(つもりです)。


提案したupdateの新挙動について、もう一度書きます。より明らかにするため
に、rubyコードも示します。以下では、hash1とhash2の二つのHashオブジェク
トについて、hash1.update(hash2)とする場合を考えます。

***ここからは、現在のupdateメソッドの説明
1. 片方にしかないkeyについては、update後には唯一存在したkey-valueの組
   がhash1に格納される。
2. 両方に同じkeyが存在した場合は、hash2のvalueがhash1のkey-valueとして
   格納される。

現在のupdateメソッドは次のように書ける。

class Hash
  def update(hash)
    hash.each_pair {|key, value|
      self[key] = value
    }
    return self
  end
end

# サンプル
hash1 = { 1=>2, 2=>3, 3=>4 }
hash2 = { 2=>4, 3=>8, 4=>16 }
hash1.update(hash2)
# この時点で、hash1は{ 1=>2, 2=>4, 3=>8, 4=>16 }
***ここまでは、現在updateメソッドの説明


***ここからは、私の提案した新しいupdateメソッドの説明
1. 片方にしかないkeyについては、update後には唯一存在したkey-valueの組
   がhash1に格納される。
2. 両方に同じkeyが存在する場合
   - updateメソッドがブロック無しで呼ばれた時は、hash2のvalueを
     hash1[key]に格納する。
   - updateメソッドがブロック付きで呼ばれた時は、hash1[key]と
     hash2[key]の二つのvalueをパラメータとしてブロックを評価し、その結
     果をvalueとしてhash1[key]に格納する。

私の提案した新しいupdateメソッドはつぎのように書ける。

class Hash
  def update(hash)
    hash.each_pair{|key, value|
      if self.key? key then
        self[key] = iterator? ? yield(self[key], value) : value
      else
        self[key] = value
      end
    }
    return self
  end
end

# サンプル
hash1 = { 1=>2, 2=>3, 3=>4 }
hash2 = { 2=>4, 3=>8, 4=>16 }
hash1.update(hash2)
# この時点で、hash1は{ 1=>2, 2=>4, 3=>8, 4=>16 }
# ブロック指定なしの場合の動作は、現在のupdateと同じ。

hash1 = { 1=>2, 2=>3, 3=>4 }
hash2 = { 2=>4, 3=>8, 4=>16 }
hash1.update(hash2) {|value1, value2|
# keyに重複があった場合には元からあるvalueを選ぶようなブロック
  value1
}
# この時点で、hash1は{ 1=>2, 2=>3, 3=>4, 4=>16 }
***ここまでは、私の提案した新しいupdateメソッドの説明

--
丸山冬彦
東京工業大学 情報理工学研究科 数理計算科学専攻 松岡研究室
mailto:fuyuhik8@is.titech.ac.jp
http://matsu-www.is.titech.ac.jp/%7emaruyama/

In This Thread