[#9445] thread.rb — m_seki@...

18 messages 2000/03/16
[#9446] Re: thread.rb — matz@... (Yukihiro Matsumoto) 2000/03/17

[#9460] Re: thread.rb — m_seki@... 2000/03/21

[#9462] Re: thread.rb — matz@... (Yukihiro Matsumoto) 2000/03/21

まつもと ゆきひろです

[#11281] Re: thread.rb — Masatoshi SEKI <m_seki@...> 2000/10/22

[#9498] timeout しない timeout — ARIMA Yasuhiro <fit0298@...>

有馬です。

20 messages 2000/03/26
[#9506] Re: timeout しない timeout — matz@... (Yukihiro Matsumoto) 2000/03/27

まつもと ゆきひろです

[#9509] Re: timeout しない timeout — gotoken@... (GOTO Kentaro) 2000/03/27

In message "[ruby-dev:9506] Re: timeout しない timeout"

[ruby-dev:9377] Hash.new('')

From: WATANABE Tetsuya <tetsu@...>
Date: 2000-03-06 06:09:30 UTC
List: ruby-dev #9377
渡辺哲也です。

Hash クラスでは、デフォルト値を

h = Hash.new(0)

のように設定できますが、

h = Hash.new('')

とした場合

Hash#concat
Hash#<<

では、同じ? オブジェクトにアクセスしてし
まうのか、私が思うように初期化ができませ
ん。これは仕様でしょうか?

テストスクリプトです。

s1 は、「+=」で希望した結果になるのです
が、それ以外はダメのようです。

------------------------------
#! /usr/local/bin/ruby

s1 = Hash.new('')
s2 = Hash.new('')
s3 = Hash.new('')

['a', 'b', 'c', 'd', 'e', 
  'a', 'b', 'c', 'd', 'e'].each do |v|
  s1[v] += v
#  p s1[v].id
  s2[v].concat(v)
#  p s2[v].id
  s3[v] << v
#  p s3[v].id
end

print "s1\n"
s1.each_key do |v|
  p s1[v]
end

print "s2\n"
s2.each_key do |v|
  p s2[v]
end

print "s3\n"
s3.each_key do |v|
  p s3[v]
end
------------------------------

サンプル実行結果

------------------------------
$ ruby hash2.rb 
s1
"ee"
"aa"
"bb"
"cc"
"dd"
s2
s3
------------------------------

確認環境は、ruby-1.5.2 の最近のリリース
です。気がついたのは、2 月に入ったころで
した。

--
WATANABE Tetsuya
 e-mail: Tetsuya_WATANABE@hp.com
         tetsu@jpn.hp.com

In This Thread

Prev Next