[#1649] Re: New Ruby projects — Yukihiro Matsumoto <matz@...>
The following message is a courtesy copy of an article
[#1672] Re: Ruby 1.4 stable manual bug? — Yukihiro Matsumoto <matz@...>
The following message is a courtesy copy of an article
[#1673] Re: Possible problem with ext/socket in 1.5.2 — itojun@...
[#1694] Conventions for our Ruby book — Dave Thomas <Dave@...>
[#1715] Install postgresql support — Ikhlasul Amal <amal@...>
Hi all,
Hi,
[#1786] Is this a bug? — Clemens Hintze <clemens.hintze@...>
(mailed & posted)
[#1814] Objects nested sometimes. — Hugh Sasse Staff Elec Eng <hgs@...>
I am attemptiong to write a package which consists of a workspace
[#1816] Ruby 1.5.3 under Tru64 (Alpha)? — Clemens Hintze <clemens.hintze@...>
Hi all,
Hi,
Yukihiro Matsumoto writes:
Hi,
Hi,
[#1834] enum examples? — Hugh Sasse Staff Elec Eng <hgs@...>
Has anyone any examplse of using the Enumerable module? I've had a
[#1844] Minor irritation, can't figure out how to patch it though! — Hugh Sasse Staff Elec Eng <hgs@...>
I was considering how difficult it would be to patch Ruby to accept
[#1889] [ruby-1.5.3] require / SAFE — ts <decoux@...>
[#1896] Ruby Syntax similar to other languages? — "David Douthitt" <DDouthitt@...>
From: Yukihiro Matsumoto <matz@netlab.co.jp>
[#1900] Enumerations and all that. — Hugh Sasse Staff Elec Eng <hgs@...>
Thank you to the people who responded to my questions about Enumerated
Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
On 16 Mar 2000, Dave Thomas wrote:
[#1929] Re: Class Variables — "David Douthitt" <DDouthitt@...>
| "David Douthitt" <DDouthitt@cuna.com> writes:
[#1942] no Fixnum#new ? — Quinn Dunkan <quinn@...>
Ok, I can add methods to a built-in class well enough (yes I know about succ,
[#1989] English Ruby/Gtk Tutorial? — schneik@...
Hi,
[#2022] rb_global_entry — ts <decoux@...>
[#2036] Anonymous and Singleton Classes — B_DAVISON <Bob.Davison@...>
I am a Ruby newbie and having some problems getting my mind around certain
[#2069] Ruby/GTK+ question about imlib --> gdk-pixbug — schneik@...
[#2073] Re: eval.rb fails — "Dat Nguyen" <thucdat@...>
The doc is fine, this happens only if you try to execute 'until' block
On Wed, 22 Mar 2000, Dat Nguyen wrote:
[#2084] Scope violated by import via 'require'? — Clemens Hintze <c.hintze@...>
Hi,
[#2104] ARGF or $< — Hugh Sasse Staff Elec Eng <hgs@...>
Has anyone any examples of how to use ARGF or $< as I cannot find much
Hi.
[#2165] Ruby strict mode and stand-alone executables. — "Conrad Schneiker" <schneiker@...>
Some people want Ruby to have a strict compile mode.
[#2203] Re: parse bug in 1.5 — schneik@...
[#2212] Re: Ruby/Glade usage questions. — ts <decoux@...>
>>>>> "m" == mrilu <mrilu@ale.cx> writes:
[#2241] setter() for local variables — ts <decoux@...>
[#2256] Multiple assignment of pattern match results. — schneik@...
[#2267] Re: Ruby and Eiffel — h.fulton@...
[#2309] Question about attribute writers — Dave Thomas <Dave@...>
Clemens Hintze <c.hintze@gmx.net> writes:
[ruby-talk:02254] Hashing
Hey,
Is there some reason ostruct.rb starts like this:
class OpenStruct
def initialize(hash=nil)
@table = {}
if hash
for k,v in hash
@table[k] = v
end
end
end
I think we're trying to make copy of hash 'hash' to @table. Why don't we
say:
@table = hash.dup
or
@table = hash.clone
or
@table = Hash.new.replace hash
I guess it has something to do with semantics of the copying. It matters
whether
hash["a"] = "b"
OpenStruct.new(hash)'s @table["key"] points to the same "b" or to other
string with contents of "b" (in next example, whether openstruct.@table
has something like c or like d).
a = "a"
b = "b";
p a.id # => 123
p b.id # => 456
c = a
d = a.dup
p c.id # => 123
p d.id # => 789
Or is it about key too, so that does it point to same "key" or to
"key".dup ?
Well, I think copying like in OpenStruct is so common that Hash should
have builtin method for it.
Now some other points of Hash. First about documentation. This excerpt is
from my html-version of 1.4 documents.
dup
Returns a newly created hash table which has the save keys
and values to the receiver. clone returns the complete
copy of the original hash table, including freeze status
and instance variables. On the other hand, dup copies the
hash table containts.
Note: I didn't see any other docs for Hash.clone.
I try to fix few things here, but English is not my mother tongue so this
just can't be right:
dup
Returns a newly created hash table which has same keys and values
as the original hash instance. dup differs from clone by copying
only hash contents (that is key,value-pairs).
Example:
foo = {"key"=>"value", "baz"=>"zak"}
bar = foo.dup
print bar[baz] # => "zak"
clone
Returns a newly created hash table which is a complete copy of the
original hash instance. clone differs from dup by copying original
hash table completely including key,value-pairs, freeze status and
instance variables.
Example:
...
I'd like to see good examples for different copying strategies too
(shallow, deep).
One more point (raised in checking experimentation :):
key = "key"
value = "value"
a = { key => value }
b = a.invert
c = b.invert
print key.id # 537639674
print value.id # 537639554
print a[key].id # 537639554, it's value
print b[value].id # 537639704, it's not key
print c[key].id # 537639584, well, it's not value anymore
It seems that invert makes clone (or duplicate) of it's keys and values.
If this is important at all it should make it's way into documentation!
Enough questions for one mail, isn't it?