[#347506] how do you do this — George George <george.githinji@...>

Given an array of strings e.g.

20 messages 2009/10/01

[#347686] what do you enjoy in a ruby quiz? — Martin DeMello <martindemello@...>

I've noticed that the ruby quiz has been getting few responses of

22 messages 2009/10/04

[#347700] Count the number of times an element occurs in an array — Jim Burgess <jack.zelig@...>

Hi,

13 messages 2009/10/05

[#347715] regex simplifier? — Roger Pack <rogerpack2005@...>

Question.

17 messages 2009/10/05

[#347765] Ruby for the wrong reason — flebber <flebber.crue@...>

Hi

39 messages 2009/10/06
[#347774] Re: Ruby for the wrong reason — 7stud -- <bbxx789_05ss@...> 2009/10/06

flebber wrote:

[#347800] Re: Ruby for the wrong reason — James Edward Gray II <james@...> 2009/10/06

On Oct 6, 2009, at 1:16 AM, 7stud -- wrote:

[#347821] Re: Ruby for the wrong reason — 7stud -- <bbxx789_05ss@...> 2009/10/06

James Edward Gray II wrote:

[#347830] How to not display output of a system call. — Jerry Mr <jerry.piazza@...>

Lets say I have a Windows command line program that runs the following:

11 messages 2009/10/06

[#347871] Google Wave- I need contacts! — Tim Mcd <tmcdowell@...>

After 6 days, i finally got my gWave invite! ('and there was much

21 messages 2009/10/07
[#347889] Re: Google Wave- I need contacts! — Andrew Timberlake <andrew@...> 2009/10/07

Well, you could share the love (I'd love an invite) and build contacts

[#347899] Re: Google Wave- I need contacts! — Tim Mcd <tmcdowell@...> 2009/10/07

Andrew Timberlake wrote:

[#347904] Re: Google Wave- I need contacts! — Rajinder Yadav <devguy.ca@...> 2009/10/07

Tim, when they restrict the rules you could ping this group for an

[#347909] Re: Google Wave- I need contacts! — Tim Mcd <tmcdowell@...> 2009/10/07

Rajinder Yadav wrote:

[#349016] Re: Google Wave- I need contacts! — Jarod Reid <jarod@...> 2009/10/28

i'd like an invite if you have a spare

[#350049] Re: Google Wave- I need contacts! — Rajinder Yadav <devguy.ca@...> 2009/11/10

Jarod Reid wrote:

[#350081] Re: Google Wave- I need contacts! — Michael Weller <gibbsnich@...> 2009/11/10

Uhh, didn't hear of google wave before.

[#348042] Windows Ruby Version Check — James Edward Gray II <james@...>

Can a Windows Ruby user please confirm that the "Ruby 1.9.1-p129

11 messages 2009/10/09

[#348100] Class Level inheritable attributes - are we there yet? — dreamcat four <dreamcat4@...>

Hi,

34 messages 2009/10/10
[#348103] Re: Class Level inheritable attributes - are we there yet? — "David A. Black" <dblack@...> 2009/10/10

Hi --

[#348104] Re: Class Level inheritable attributes - are we there yet? — dreamcat four <dreamcat4@...> 2009/10/10

The problem with class variables in Ruby, is that a class variable is

[#348136] Re: Class Level inheritable attributes - are we there yet? — Robert Klemme <shortcutter@...> 2009/10/11

On 10/10/2009 08:59 PM, dreamcat four wrote:

[#348200] Re: Class Level inheritable attributes - are we there yet? — "ara.t.howard" <ara.t.howard@...> 2009/10/12

[#348231] Re: Class Level inheritable attributes - are we there yet? — "David A. Black" <dblack@...> 2009/10/12

On Tue, 13 Oct 2009, ara.t.howard wrote:

[#348248] Re: Class Level inheritable attributes - are we there yet? — "ara.t.howard" <ara.t.howard@...> 2009/10/13

On Mon, Oct 12, 2009 at 17:48, David A. Black <dblack@rubypal.com> wrote:

[#348258] Re: Class Level inheritable attributes - are we there yet? — Robert Klemme <shortcutter@...> 2009/10/13

2009/10/13 ara.t.howard <ara.t.howard@gmail.com>:

[#348169] Does ruby.h overrides C "enum"? — Iñaki Baz Castillo <ibc@...>

Hi, writting a Ruby C extension (for 1.8 or 1.9) I get an error when using

19 messages 2009/10/12

[#348281] how to solve a special JRuby and Java syntax conflict? — "Axel Etzold" <AEtzold@...>

Dear all,

15 messages 2009/10/13
[#348285] Re: how to solve a special JRuby and Java syntax conflict? — Paul Smith <paul@...> 2009/10/13

On Tue, Oct 13, 2009 at 8:52 PM, Axel Etzold <AEtzold@gmx.de> wrote:

[#348286] Re: how to solve a special JRuby and Java syntax conflict? — Paul Smith <paul@...> 2009/10/13

On Tue, Oct 13, 2009 at 9:52 PM, Paul Smith <paul@pollyandpaul.co.uk> wrote:

[#348287] Re: how to solve a special JRuby and Java syntax conflict? — "Axel Etzold" <AEtzold@...> 2009/10/13

Dear Paul,

[#348290] Re: how to solve a special JRuby and Java syntax conflict? — "Walton Hoops" <walton@...> 2009/10/13

Axel Etzold wrote:

[#348325] Re: how to solve a special JRuby and Java syntax conflict? — "Axel Etzold" <AEtzold@...> 2009/10/14

[#348317] deep cloning, how? — Rajinder Yadav <devguy.ca@...>

I am trying to figure out how to perform a deep clone

29 messages 2009/10/14
[#348330] Re: deep cloning, how? — Robert Klemme <shortcutter@...> 2009/10/14

2009/10/14 Rajinder Yadav <devguy.ca@gmail.com>:

[#348366] Re: deep cloning, how? — Caleb Clausen <vikkous@...> 2009/10/14

On 10/14/09, Robert Klemme <shortcutter@googlemail.com> wrote:

[#348379] Re: deep cloning, how? — Robert Klemme <shortcutter@...> 2009/10/14

On 14.10.2009 19:03, Caleb Clausen wrote:

[#348428] Re: deep cloning, how? — Caleb Clausen <vikkous@...> 2009/10/15

On 10/14/09, Robert Klemme <shortcutter@googlemail.com> wrote:

[#348449] Re: deep cloning, how? — Brian Candler <b.candler@...> 2009/10/16

Caleb Clausen wrote:0

[#348339] Hey you! Stop using relative requires! — Intransition <transfire@...>

I recently came across two different programs that had this line in a

22 messages 2009/10/14
[#348365] Re: Hey you! Stop using relative requires! — Tony Arcieri <tony@...> 2009/10/14

On Wed, Oct 14, 2009 at 6:01 AM, Intransition <transfire@gmail.com> wrote:

[#348401] matching against a zillion patterns — George George <george.githinji@...>

i have some script in which i would like to match a string against

18 messages 2009/10/15

[#348486] Dynamic nested each in ruby 1.8.7? — Toi Toi <toi@...>

How can one have a function that uses a dynamic amount of each

15 messages 2009/10/18

[#348570] memory leak — Rob Doug <broken.m@...>

Hi all,

27 messages 2009/10/20
[#348647] Re: memory leak — Robert Klemme <shortcutter@...> 2009/10/20

On 20.10.2009 03:10, Rob Doug wrote:

[#348655] Re: memory leak — Rob Doug <broken.m@...> 2009/10/20

[#348679] Re: memory leak — Robert Klemme <shortcutter@...> 2009/10/21

On 21.10.2009 00:47, Rob Doug wrote:

[#348718] Re: memory leak — Rob Doug <broken.m@...> 2009/10/22

> You could print out object statistics to get an idea about the source of

[#348727] Creating and raising custom exception in Ruby C extension — Iñaki Baz Castillo <ibc@...>

Hi, I'm trying to create a CustomError exception in a Ruby C extension and raise it:

8 messages 2009/10/22

[#348738] convert/replace a value of nil with 0? — Mmcolli00 Mom <mmc_collins@...>

Do you know how I can convert or replace any value that gets back a

12 messages 2009/10/22

[#348825] mail — Mikel Lindsaar <raasdnil@...>

Some of you might know about a little gem that Minero Aoki wrote called tmail.

15 messages 2009/10/25

[#348877] Array#collect in a method call, not working for me — Michael Randall <randallsata@...>

I am sure I'm making a newbie mistake, as I've just started learning

9 messages 2009/10/26

[#349004] duby 0.0.1 Released — Charles Oliver Nutter <headius@...>

duby version 0.0.1 has been released!

18 messages 2009/10/27
[#349007] Re: [ANN] duby 0.0.1 Released — "Bill Kelly" <billk@...> 2009/10/27

[#349022] Closures / lambda question — Aldric Giacomoni <aldric@...>

This is something I don't understand, and did not understand when I

13 messages 2009/10/28

[#349024] Desktop GUI apps in Ruby — Marnen Laibow-Koser <marnen@...>

Hi folks!

35 messages 2009/10/28

[#349099] Ruby can't subtract ? — Aldric Giacomoni <aldric@...>

I found this blog entry:

25 messages 2009/10/28
[#349100] Re: Ruby can't subtract ? — "Matthew K. Williams" <matt@...> 2009/10/28

On Thu, 29 Oct 2009, Aldric Giacomoni wrote:

[#349183] Using multicore CPUs in parallel tasks — Marc Hoeppner <marc.hoeppner@...>

Hi,

19 messages 2009/10/29
[#349203] Re: Using multicore CPUs in parallel tasks — Glen Holcomb <damnbigman@...> 2009/10/29

On Thu, Oct 29, 2009 at 8:56 AM, Marc Hoeppner

[#349221] Re: Using multicore CPUs in parallel tasks — Tony Arcieri <tony@...> 2009/10/29

On Thu, Oct 29, 2009 at 11:48 AM, Glen Holcomb <damnbigman@gmail.com> wrote:

[#349253] Ruby doesn't implement x++ for Fixnum's because ??? — RichardOnRails <RichardDummyMailbox58407@...>

Hi,

159 messages 2009/10/30
[#349303] Re: Ruby doesn't implement x++ for Fixnum's because ??? — RichardOnRails <RichardDummyMailbox58407@...> 2009/10/30

On Oct 29, 9:18瀾m, RichardOnRails

[#349307] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Robert Klemme <shortcutter@...> 2009/10/30

2009/10/30 RichardOnRails <RichardDummyMailbox58407@uscomputergurus.com>:

[#349337] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Rick DeNatale <rick.denatale@...> 2009/10/30

On Fri, Oct 30, 2009 at 11:05 AM, Robert Klemme

[#349600] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Tony Arcieri <tony@...> 2009/11/04

On Fri, Oct 30, 2009 at 12:03 PM, Rick DeNatale <rick.denatale@gmail.com>wrote:

[#349606] Re: Ruby doesn't implement x++ for Fixnum's because ??? — "Michael W. Ryder" <_mwryder55@...> 2009/11/04

Tony Arcieri wrote:

[#349607] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Tony Arcieri <tony@...> 2009/11/04

On Tue, Nov 3, 2009 at 10:30 PM, Michael W. Ryder <_mwryder55@gmail.com>wrote:

[#349611] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Charles Oliver Nutter <headius@...> 2009/11/04

Of course I had to jump in here.

[#349633] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Rick DeNatale <rick.denatale@...> 2009/11/04

On Wed, Nov 4, 2009 at 1:58 AM, Charles Oliver Nutter

[#349635] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Marnen Laibow-Koser <marnen@...> 2009/11/04

Rick Denatale wrote:

[#349621] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Gavin Sinclair <gsinclair@...> 2009/11/04

On Nov 4, 5:58m, Charles Oliver Nutter <head...@headius.com> wrote:

[#349654] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Tony Arcieri <tony@...> 2009/11/04

On Wed, Nov 4, 2009 at 3:55 AM, Gavin Sinclair <gsinclair@gmail.com> wrote:

[#349665] Re: Ruby doesn't implement x++ for Fixnum's because ??? — "Walton Hoops" <walton@...> 2009/11/04

> -----Original Message-----

[#349671] Re: Ruby doesn't implement x++ for Fixnum's because ??? — "Michael W. Ryder" <_mwryder55@...> 2009/11/04

Walton Hoops wrote:

[#349682] Re: Ruby doesn't implement x++ for Fixnum's because ??? — "Walton Hoops" <walton@...> 2009/11/04

> -----Original Message-----

[#349688] Re: Ruby doesn't implement x++ for Fixnum's because ??? — "Michael W. Ryder" <_mwryder55@...> 2009/11/04

Walton Hoops wrote:

[#349689] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Marnen Laibow-Koser <marnen@...> 2009/11/04

Michael W. Ryder wrote:

[#349693] Re: Ruby doesn't implement x++ for Fixnum's because ??? — "Walton Hoops" <walton@...> 2009/11/04

> -----Original Message-----

[#349814] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Seebs <usenet-nospam@...> 2009/11/06

On 2009-11-06, David A. Black <dblack@rubypal.com> wrote:

[#349879] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Tony Arcieri <tony@...> 2009/11/08

On Fri, Nov 6, 2009 at 4:30 PM, Seebs <usenet-nospam@seebs.net> wrote:

[#349880] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Rick DeNatale <rick.denatale@...> 2009/11/08

On Sun, Nov 8, 2009 at 11:48 AM, Tony Arcieri <tony@medioh.com> wrote:

[#349885] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Tony Arcieri <tony@...> 2009/11/08

On Sun, Nov 8, 2009 at 10:45 AM, Rick DeNatale <rick.denatale@gmail.com>wrote:

[#349886] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Marnen Laibow-Koser <marnen@...> 2009/11/08

Tony Arcieri wrote:

[#349887] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Tony Arcieri <tony@...> 2009/11/08

On Sun, Nov 8, 2009 at 11:22 AM, Marnen Laibow-Koser <marnen@marnen.org>wrote:

[#349889] Re: Ruby doesn't implement x++ for Fixnum's because ??? — "Walton Hoops" <walton@...> 2009/11/08

> -----Original Message-----

[#349892] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Tony Arcieri <tony@...> 2009/11/08

On Sun, Nov 8, 2009 at 11:49 AM, Walton Hoops <walton@vyper.hopto.org>wrote:

[#349898] Re: Ruby doesn't implement x++ for Fixnum's because ??? — "Walton Hoops" <walton@...> 2009/11/08

> From: bascule@gmail.com [mailto:bascule@gmail.com] On Behalf Of Tony

[#349900] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Tony Arcieri <tony@...> 2009/11/08

On Sun, Nov 8, 2009 at 1:15 PM, Walton Hoops <walton@vyper.hopto.org> wrote:

[#349980] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Seebs <usenet-nospam@...> 2009/11/09

On 2009-11-09, Marnen Laibow-Koser <marnen@marnen.org> wrote:

[#349988] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Rick DeNatale <rick.denatale@...> 2009/11/09

On Mon, Nov 9, 2009 at 8:40 AM, Seebs <usenet-nospam@seebs.net> wrote:

[#349989] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Marnen Laibow-Koser <marnen@...> 2009/11/09

Rick Denatale wrote:

[#349994] Re: Ruby doesn't implement x++ for Fixnum's because ??? — Aldric Giacomoni <aldric@...> 2009/11/09

Marnen Laibow-Koser wrote:

[#349264] How do you get the tail end of a string? — "Just Another Victim of the Ambient Morality" <ihatespam@...>

I'm actually hoping this is an embarrassing question but how do you get

55 messages 2009/10/30
[#349266] Re: How do you get the tail end of a string? — "Michael W. Ryder" <_mwryder55@...> 2009/10/30

Just Another Victim of the Ambient Morality wrote:

[#349267] Re: How do you get the tail end of a string? — "Michael W. Ryder" <_mwryder55@...> 2009/10/30

Michael W. Ryder wrote:

[#349286] Re: How do you get the tail end of a string? — Bertram Scharpf <lists@...> 2009/10/30

Hi,

[#349323] Merging hashes using both symbols and strings as keys — shenry <stuarthenry@...>

I'm trying to merge to hashes, one using symbols as keys (the defined

15 messages 2009/10/30
[#349528] Re: Merging hashes using both symbols and strings as keys — Josh Cheek <josh.cheek@...> 2009/11/03

On Fri, Oct 30, 2009 at 11:10 AM, shenry <stuarthenry@gmail.com> wrote:

[#349352] In-place parameter modification — Dave Anderson <anderson@...>

Native to ruby are several methods that change passed-in parameters

17 messages 2009/10/30

[#349406] Hamurabi (#223) — Daniel Moore <yahivin@...>

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

23 messages 2009/10/31
[#349451] Re: [QUIZ] Hamurabi (#223) — James Edward Gray II <james@...> 2009/11/01

On Oct 31, 2009, at 6:23 PM, Daniel Moore wrote:

[#349498] Re: [QUIZ] Hamurabi (#223) — Martin DeMello <martindemello@...> 2009/11/02

On Mon, Nov 2, 2009 at 5:29 AM, James Edward Gray II

Re: deep cloning, how?

From: Rajinder Yadav <devguy.ca@...>
Date: 2009-10-17 21:05:07 UTC
List: ruby-talk #348484
Rick DeNatale wrote:
> On Fri, Oct 16, 2009 at 12:30 PM, Caleb Clausen <vikkous@gmail.com> wrote:
> 
>> Object#dup does not call new; I think it's more like:
>> self.class.allocate.initialize_copy(self). See what happens here:
>>
>> irb(main):001:0> class K
>> irb(main):002:1> def initialize
>> irb(main):003:2> p :initialize
>> irb(main):004:2> end
>> irb(main):005:1> end
>> => nil
>> irb(main):006:0> k=K.new
>> :initialize
>> => #<K:0xb7ce8ee0>
>> irb(main):008:0> k2=k.dup
>> => #<K:0xb7ce0f38>
> 
> And clone doesn't call initialize EITHER:

I had made this assumption, otherwise it would have made more sense to
overload initialize to accept the source object that gets passed to 
initialize_copy ... the code would be ugly as you would need to do type checking 
at runtime ( if iv.class = A using your sample ) to execute the correct code.

my c++ and copy constructor concept got in the way earlier, ruby doesn't quite 
do what a c++ developer would expect, the initialize_copy is a cleaner way to do 
this lacking static type checking

thanks for the sample code to validate this point

> class A
>   def initialize(iv)
>     @iv = iv
>     puts "initialize called"
>   end
> 
>   def initialize_copy(arg)
>     puts "initialize copy called, my iv is #{@iv}"
> 
>   end
> end
> 
> puts "Creating original"
> a = A.new(42)
> puts "calling dup"
> a1 = a.dup
> puts "calling clone"
> a2 = a.clone
> 
> outputs
> 
> Creating original
> initialize called
> calling dup
> initialize copy called, my iv is 42
> calling clone
> initialize copy called, my iv is 42
> 
> It you look at the source code in object.c It becomes apparent that
> Object#dup and Object#clone do pretty much the same thing except for
> propagating the frozen bit and singleton classes:
> 
> VALUE
> rb_obj_clone(obj)
>     VALUE obj;
> {
>     VALUE clone;
> 
>     if (rb_special_const_p(obj)) {
>         rb_raise(rb_eTypeError, "can't clone %s", rb_obj_classname(obj));
>     }
>     clone = rb_obj_alloc(rb_obj_class(obj));
>     RBASIC(clone)->klass = rb_singleton_class_clone(obj);
>     RBASIC(clone)->flags = (RBASIC(obj)->flags | FL_TEST(clone,
> FL_TAINT)) & ~(FL_FREEZE|FL_FINALIZE);
>     init_copy(clone, obj);
>     RBASIC(clone)->flags |= RBASIC(obj)->flags & FL_FREEZE;
> 
>     return clone;
> }
> 
> VALUE
> rb_obj_dup(obj)
>     VALUE obj;
> {
>     VALUE dup;
> 
>     if (rb_special_const_p(obj)) {
>         rb_raise(rb_eTypeError, "can't dup %s", rb_obj_classname(obj));
>     }
>     dup = rb_obj_alloc(rb_obj_class(obj));
>     init_copy(dup, obj);
> 
>     return dup;
> }
> static void
> init_copy(dest, obj)
>     VALUE dest, obj;
> {
>     if (OBJ_FROZEN(dest)) {
>         rb_raise(rb_eTypeError, "[bug] frozen object (%s) allocated",
> rb_obj_classname(dest));
>     }
>     RBASIC(dest)->flags &= ~(T_MASK|FL_EXIVAR);
>     RBASIC(dest)->flags |= RBASIC(obj)->flags & (T_MASK|FL_EXIVAR|FL_TAINT);
>     if (FL_TEST(obj, FL_EXIVAR)) {
> 	rb_copy_generic_ivar(dest, obj);
>     }
>     rb_gc_copy_finalizer(dest, obj);
>     switch (TYPE(obj)) {
>       case T_OBJECT:
>       case T_CLASS:
>       case T_MODULE:
> 	if (ROBJECT(dest)->iv_tbl) {
> 	    st_free_table(ROBJECT(dest)->iv_tbl);
> 	    ROBJECT(dest)->iv_tbl = 0;
> 	}
> 	if (ROBJECT(obj)->iv_tbl) {
> 	    ROBJECT(dest)->iv_tbl = st_copy(ROBJECT(obj)->iv_tbl);
> 	}
>     }
>     rb_funcall(dest, id_init_copy, 1, obj);
> }
> 
> 
> This code is from 1.8.6 just cuz that's what I happened to grab.
> 
> In both cases the same subroutine is used to create the state of the
> new object prior to calling intialize_copy and that subroutine
> basically allocates the new object, copies instance variables "under
> the table" and then invokes initialize_copy, no initialize method is
> ever called on the result object.
> 
> Which makes me thing that the whole "+dup+ typically uses the  class
> of the descendent object to create the new instance" is meaningless,
> or untrue.  Probably this is a vestige of an older implementation.
> 
> 


-- 
Kind Regards,
Rajinder Yadav

http://DevMentor.org
Do Good ~ Share Freely

In This Thread