[#52047] ruby-talk separation, part II — " JamesBritt" <james@...>

32 messages 2002/10/01
[#52099] Re: ruby-talk separation, part II — Holden Glova <dsafari@...> 2002/10/01

-----BEGIN PGP SIGNED MESSAGE-----

[#52111] Re: ruby-talk separation, part II — "Bulat Ziganshin" <bulatz@...> 2002/10/01

[#52118] Re: ruby-talk separation, part II — Jim Freeze <jim@...> 2002/10/01

On Tue, Oct 01, 2002 at 09:03:44PM +0900, Bulat Ziganshin wrote:

[#52167] Re: ruby-talk separation, part II — Sean Chittenden <sean@...> 2002/10/01

FreeBSD's got a decent setup. Few additions to the list here:

[#52245] Compiling stuff under Windows: list of problems — "Gavin Sinclair" <gsinclair@...>

I don't want my tortuous experience of trying to get things working under this

13 messages 2002/10/02

[#52259] bugs — "Kontra, Gergely" <kgergely@...>

Hi!

26 messages 2002/10/02
[#52261] Re: bugs — nobu.nokada@... 2002/10/02

Hi,

[#52269] Re: bugs — "Stathy G. Touloumis" <stathy.touloumis@...> 2002/10/02

[#52300] Can soneone tell me what I'm doing wrong... — Jeremy Gregorio <gunvalk@...>

I'm trying to write a little script to rename my mp3s I started with this:

15 messages 2002/10/02

[#52391] CRuby (Was: R) — Nikodemus Siivola <tsiivola@...>

CRuby = subset of Ruby + typed methods + compiler to C

28 messages 2002/10/03
[#52395] Re: CRuby (Was: R) — Anders Bengtsson <ndrsbngtssn@...> 2002/10/03

Nikodemus Siivola wrote:

[#52400] Re: CRuby (Was: R) — Michael Campbell <michael_s_campbell@...> 2002/10/03

[#52402] Re: CRuby (Was: R) — Anders Bengtsson <ndrsbngtssn@...> 2002/10/03

Michael Campbell wrote:

[#52436] Specifying local and external block parameters (that old chestnut) — "Gavin Sinclair" <gsinclair@...>

I've cannibalised discussion from the "Bugs" thread. I hope it is a service to

49 messages 2002/10/04
[#52440] Re: Specifying local and external block parameters (that old chestnut) — matz@... (Yukihiro Matsumoto) 2002/10/04

Hi,

[#52610] Re: Specifying local and external block parameters (that old chestnut) — "MikkelFJ" <mikkelfj-anti-spam@...> 2002/10/06

[#52612] Re: Specifying local and external block parameters (that old chestnut) — ts <decoux@...> 2002/10/06

>>>>> "M" == MikkelFJ <mikkelfj-anti-spam@bigfoot.com> writes:

[#52557] Speed of Ruby/modruby vs PHP — Jim Freeze <jim@...>

Hi:

27 messages 2002/10/05
[#52598] Re: Speed of Ruby/modruby vs PHP — "MikkelFJ" <mikkelfj-anti-spam@...> 2002/10/06

[#52600] Re: Speed of Ruby/modruby vs PHP — Jim Freeze <jim@...> 2002/10/06

On Sun, Oct 06, 2002 at 08:50:48PM +0900, MikkelFJ wrote:

[#52601] Re: Speed of Ruby/modruby vs PHP — MoonWolf <moonwolf@...> 2002/10/06

> How do I configure mod_ruby to run with a cached script?

[#52628] Re: Speed of Ruby/modruby vs PHP — Jim Freeze <jim@...> 2002/10/06

Ok, here is how I understand this.

[#52636] Re: Speed of Ruby/modruby vs PHP — Jim Freeze <jim@...> 2002/10/06

On Sun, Oct 06, 2002 at 05:07:25PM -0400, Jim Freeze wrote:

[#52581] Platform again — Friedrich Dominicus <frido@...>

Well I ask again. On what platforms are you using ruby most of the

36 messages 2002/10/06

[#52602] Another take on ensuring right args to methods — Massimiliano Mirra <list@...>

11 messages 2002/10/06

[#52653] webforms — "Kontra, Gergely" <kgergely@...>

Hi!

19 messages 2002/10/07

[#52669] Things That Newcomers to Ruby Should Know — billtj@... (Bill Tj)

Hi,

59 messages 2002/10/07
[#52805] Re: Things That Newcomers to Ruby Should Know — "Bulat Ziganshin" <bulatz@...> 2002/10/09

Hello Bill,

[#52982] Re: Things That Newcomers to Ruby Should Know — "Kontra, Gergely" <kgergely@...> 2002/10/11

>3) 'x+=b', 'x*=b' and other assignment operators is internally translated

[#52727] block vars (some theory) — "Bulat Ziganshin" <bulatz@...>

Hello all,

37 messages 2002/10/08
[#52728] Re: block vars (some theory) — ts <decoux@...> 2002/10/08

>>>>> "B" == Bulat Ziganshin <bulatz@integ.ru> writes:

[#52806] strange Hash default behaviour — John Tromp <tromp@...>

I wrote a ruby program to read a list of graph edges and produce

16 messages 2002/10/09

[#52823] CGI sessions without cookies? — Stefan Scholl <stefan.scholl@...>

I haven't tried sessions, yet. But I'm curious if you can work

17 messages 2002/10/09

[#52848] Polymorphism, Isomorphism — ptkwt@...1.aracnet.com (Phil Tomson)

Consider this a bit of public pondering...

21 messages 2002/10/09

[#53045] Sorting — warren@... (Warren Brian Noronha)

dear developer,

31 messages 2002/10/12
[#53048] Re: Sorting — dblack@... 2002/10/12

Hello --

[#53082] Re: Sorting — "Mike Campbell" <michael_s_campbell@...> 2002/10/13

> I think almost anything is a better name than CRAN, as that (to me)

[#53083] Re: Sorting — dblack@... 2002/10/13

Hello --

[#53093] Re: Sorting — "Gavin Sinclair" <gsinclair@...> 2002/10/13

[#53109] Re: Sorting — "Mike Campbell" <michael_s_campbell@...> 2002/10/13

> Just a thought: why *not* copy CPAN? It's pretty good, isn't it?

[#53183] final in ruby — "Kontra, Gergely" <kgergely@...>

Hi!

21 messages 2002/10/14

[#53230] Please check my algorithm — Vincent Foley <vinfoley@...>

Hi, I found a nice programming challenge:

12 messages 2002/10/14

[#53278] ruby-dev summary 18458-18504 — TAKAHASHI Masayoshi <maki@...>

Hi all,

16 messages 2002/10/15

[#53285] Psyco — Travis Whitton <whitton@...>

There's an interesting article on IBM developerWorks about a new program

18 messages 2002/10/16

[#53297] Interfaces in Ruby — web2ed@... (Edward Wilson)

Is there a way to write/inforce interfaces in Ruby like one can using

44 messages 2002/10/16
[#53409] Re: Interfaces in Ruby — web2ed@... (Edward Wilson) 2002/10/17

>http://rm-f.net/~cout/code/ruby/treasures/RubyTreasures-0.3/lib/hacks/interface.rb.html

[#53470] Re: Interfaces in Ruby — Paul Brannan <pbrannan@...> 2002/10/17

On Thu, Oct 17, 2002 at 01:25:57PM +0900, Edward Wilson wrote:

[#53514] Re: Interfaces in Ruby — Massimiliano Mirra <list@...> 2002/10/18

On Fri, Oct 18, 2002 at 12:16:30AM +0900, Paul Brannan wrote:

[#53300] Re: Interfaces in Ruby — Chris Gehlker <canyonrat@...> 2002/10/16

[#53334] Re: Interfaces in Ruby — Paul Brannan <pbrannan@...> 2002/10/16

On Wed, Oct 16, 2002 at 01:30:04PM +0900, Chris Gehlker wrote:

[#53359] Things That Newcomers to Ruby Should Know (10/16/02) — William Djaja Tjokroaminata <billtj@...>

Hi,

29 messages 2002/10/16
[#53774] Re: Things That Newcomers to Ruby Should Know (10/16/02) — "Hal E. Fulton" <hal9000@...> 2002/10/22

----- Original Message -----

[#53556] Help wanted with an experimental FAQ facility — Dave Thomas <Dave@...>

24 messages 2002/10/18

[#53626] XMLParser, NQXML, REXML, ... — Armin Roehrl <armin@...>

Hi XML-freaks,

23 messages 2002/10/20
[#53897] Re: XMLParser, NQXML, REXML, ... — Sean Chittenden <sean@...> 2002/10/23

> Hi XML-freaks,

[#53902] Ruby.bah! (was Re: XMLParser, NQXML... and also RAA.succ) — Austin Ziegler <austin@...> 2002/10/23

On Wed, 23 Oct 2002 13:01:59 +0900, Sean Chittenden wrote:

[#53904] Re: Ruby.bah! (was Re: XMLParser, NQXML... and also RAA.succ) — Sean Chittenden <sean@...> 2002/10/23

> > Markus and I are working on rubydoc which is now able to

[#53911] Re: Ruby.bah! (was Re: XMLParser, NQXML... and also RAA.succ) — Austin Ziegler <austin@...> 2002/10/23

On Wed, 23 Oct 2002 14:07:46 +0900, Sean Chittenden wrote:

[#53652] RAA.succ? — ptkwt@...1.aracnet.com (Phil Tomson)

I hope there will be some discussion of RAA.succ (or is it RAA.next) at

78 messages 2002/10/21
[#53654] Re: RAA.succ? — nobu.nokada@... 2002/10/21

Hi,

[#53669] Re: RAA.succ? — "NAKAMURA, Hiroshi" <nahi@...> 2002/10/21

Hi,

[#54022] RAA replaced — "NAKAMURA, Hiroshi" <nahi@...> 2002/10/24

Hi,

[#53914] Re: RAA.succ? (rpkg vs rubynet) — ptkwt@...1.aracnet.com (Phil Tomson) 2002/10/23

In article <20021023041621.GC48080@perrin.int.nxad.com>,

[#53688] functional Ruby equiv to this perl snippet — bobx@... (Bob)

# parses a text file looking for server names and ignoring lines

29 messages 2002/10/21
[#53694] Re: functional Ruby equiv to this perl snippet — Austin Ziegler <austin@...> 2002/10/21

def load_server_list

[#53696] Re: functional Ruby equiv to this perl snippet — Austin Ziegler <austin@...> 2002/10/21

I realised that my first test wasn't good for non-empty but blank

[#53718] Re: functional Ruby equiv to this perl snippet — "Bob X" <bobx@...> 2002/10/21

"Austin Ziegler" <austin@halostatue.ca> wrote in message

[#53703] rb_gc_register_address problem — Paul Brannan <pbrannan@...>

We ran into a problem today with the garbage collector (caused by our

28 messages 2002/10/21

[#53771] Perl multiple match RE in Ruby? — michael libby <x@...>

-----BEGIN PGP SIGNED MESSAGE-----

14 messages 2002/10/22

[#53865] XMLRPC and IP authentication — Daniel Berger <djberge@...>

Hi all,

13 messages 2002/10/22

[#53884] SQLite — "Bob X" <bobx@...>

Anyone working on a Ruby interface for SQLite?

109 messages 2002/10/23
[#53894] Re: SQLite — Austin Ziegler <austin@...> 2002/10/23

On Wed, 23 Oct 2002 10:38:31 +0900, Bob X wrote:

[#54714] Thoughts on Ruby — Enric Lafont <enric@1smart.com> 2002/11/03

Hi all,

[#54724] Re: Thoughts on Ruby — Albert Wagner <alwagner@...> 2002/11/03

On Saturday 02 November 2002 7:57 pm, Enric Lafont wrote:

[#54725] Re: Thoughts on Ruby — Austin Ziegler <austin@...> 2002/11/03

On Sun, 3 Nov 2002 10:57:29 +0900, Enric Lafont wrote:

[#54784] Re: Thoughts on Ruby — Enric Lafont <enric@1smart.com> 2002/11/03

Austin Ziegler wrote:

[#54802] Re: Thoughts on Ruby — Austin Ziegler <austin@...> 2002/11/03

On Mon, 4 Nov 2002 06:44:46 +0900, Enric Lafont wrote:

[#54826] Re: Thoughts on Ruby — "Gavin Sinclair" <gsinclair@...> 2002/11/04

From: "Enric Lafont" <enric@1smart.com>

[#54903] Re: Thoughts on Ruby — Brian Candler <B.Candler@...> 2002/11/05

On Mon, Nov 04, 2002 at 10:02:12PM +0900, Gavin Sinclair wrote:

[#54920] Re: Thoughts on Ruby — Austin Ziegler <austin@...> 2002/11/05

On Tue, 5 Nov 2002 20:18:47 +0900, Brian Candler wrote:

[#54927] Re: Thoughts on Ruby lack of IDE — Brad Cox <bcox@...> 2002/11/05

It is a sign of my hybrid Objective-C background, no doubt, but I

[#54929] Re: Thoughts on Ruby lack of IDE — "Curt Hibbs" <curt@...> 2002/11/05

Brad Cox wrote:

[#55322] FreeRIDE and FUI ?? (was: Re: Thoughts on Ruby lack of IDE) — "Rich" <rich@...> 2002/11/08

> > >

[#55346] Re: FreeRIDE and FUI ?? (was: Re: Thoughts on Ruby lack of IDE) — "Rich Kilmer" <rich@...> 2002/11/09

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

[#53953] Re: Things That Newcomers to Ruby Should Know (10/16/02) — "Mills Thomas (app1tam)" <app1tam@...>

But why does it really, REALLY mean that? Was there a reason for doing

13 messages 2002/10/23

[#53957] NODE tree introspection — Simon Cozens <simon@...>

13 messages 2002/10/23

[#53983] Re: Things That Newcomers to Ruby Should Know (10/16/02) — "Mills Thomas (app1tam)" <app1tam@...>

Actually, the way you describe '+=' makes sense to me. It is what I would

17 messages 2002/10/23
[#54001] Re: Things That Newcomers to Ruby Should Know (10/16/02) — William Djaja Tjokroaminata <billtj@...> 2002/10/23

Hi,

[#54012] Re: Things That Newcomers to Ruby Should Know (10/16/02) — dblack@... 2002/10/24

Hi --

[#54111] How come true, false don't support <=> (comparison) operator? — cilibrar@... (Rudi Cilibrasi)

I am wondering if there is a good reason why Ruby does not by default

24 messages 2002/10/25
[#54112] Re: How come true, false don't support <=> (comparison) operator? — dblack@... 2002/10/25

Hello --

[#54139] Re: How come true, false don't support <=> (comparison) operator? — ptkwt@...1.aracnet.com (Phil Tomson) 2002/10/25

In article <Pine.LNX.4.44.0210250754010.2650-100000@candle.superlink.net>,

[#54156] Re: How come true, false don't support <=> (comparison) operator? — dblack@... 2002/10/25

Hi --

[#54239] Snippet request: Ruby Web Server written in under an hour — Phlip <phlipcpp@...>

Rubies:

37 messages 2002/10/28
[#54328] Snippet: Tiny Featureless Ruby Web Server — Phlip <phlipcpp@...> 2002/10/29

Rubies:

[#54339] method-call style (was Re: Snippet: Tiny Featureless Ruby Web Server) — dblack@... 2002/10/29

Hi --

[#54517] Re: method-call style (was Re: Snippet: Tiny Featureless Ruby Web Server) — William Djaja Tjokroaminata <billtj@...> 2002/10/30

Bulat Ziganshin <bulatz@integ.ru> wrote:

[#54519] Re: method-call style (was Re: Snippet: Tiny Featureless Ruby Web Server) — dblack@... 2002/10/30

Hi --

[#54525] Re: method-call style (was Re: Snippet: Tiny Featureless Ruby Web Server) — William Djaja Tjokroaminata <billtj@...> 2002/10/30

dblack@candle.superlink.net wrote:

[#54527] Re: method-call style (was Re: Snippet: Tiny Featureless Ruby Web Server) — dblack@... 2002/10/30

Hi --

[#54280] exerb & fox-problem; converting gui-script to .exe on windows — Armin Roehrl <armin@...>

Hi,

12 messages 2002/10/28

[#54354] good link to read as we contemplate RAA, RAA.succ, et al — Pat Eyler <pate@...>

http://www.onlamp.com/pub/wlg/2225

28 messages 2002/10/29
[#54356] Re: good link to read as we contemplate RAA, RAA.succ, et al — dblack@... 2002/10/29

Hi --

[#54385] Re: good link to read as we contemplate RAA, RAA.succ, et al — " JamesBritt" <james@...> 2002/10/29

> Interesting. Simon (hi Simon!) is probably right that "Definitive

[#54421] want to meet Microsoft .NET guy? — matz@... (Yukihiro Matsumoto)

Hi,

17 messages 2002/10/30

[#54449] feature idea: custom literals — loats205@... (loats205)

wouldn't it be cool if you could define custom literal representations for your

30 messages 2002/10/30
[#54459] Re: feature idea: custom literals — Peter Hickman <peter@...> 2002/10/30

loats205 wrote:

[#54476] Re: feature idea: custom literals — Nikodemus Siivola <tsiivola@...> 2002/10/30

Things That Newcomers to Ruby Should Know (10/16/02)

From: William Djaja Tjokroaminata <billtj@...>
Date: 2002-10-16 16:43:59 UTC
List: ruby-talk #53359
Hi,

I just updated the list, which is also available in HTML format at
http://www.glue.umd.edu/~billtj/ruby.html.

Regards,

Bill
=============================================================================
                   Things That Newcomers to Ruby Should Know

   [1]Plain Text Format
     * Resources:
          + HOME PAGE: [2]http://www.ruby-lang.org/en/
          + FAQ: [3]http://www.rubycentral.com/faq/
          + PITFALL:
            [4]http://rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name=pit
            fall
          + ONLINE TUTORIAL/DOC/BOOK: [5]http://www.rubycentral.com/book/
          + VERY USEFUL HINTS:
               o "Programming Ruby" book by David Thomas and Andrew Hunt,
                 "When Trouble Strikes" Chapter, "But It Doesn't Work"
                 Section
               o "The Ruby Way" book by Hal Fulton, Chapter 1: "Ruby In
                 Review"

    1. Use "ruby -w" instead of simply "ruby" to get helpful warnings. If
       not invoking "ruby" directly, you can set the environment variable
       RUBYOPT to 'w':
          + win32:
            C:\> set RUBYOPT=w
                or
            pressing F5 (to execute) in the Scite editor will give you warnings
            (and F4 will position at problematic line).
          + unix:
            sh# export RUBYOPT="w"
                or
            csh# setenv RUBYOPT "w"
    2. The notation "Klass#method" in documentation is used only to
       represent an "instance method" of an object of class Klass; it is
       not a Ruby syntax at all. A "class method" in documentation, on
       the other hand, is usually represented as "Klass.method" (which is
       a valid Ruby syntax).
    3. Be aware of the lexical scoping interaction between local
       variables and block local variables. If a local variable is
       already defined before the block, then the block will use (and
       quite possibly modify) the local variable; in this case the block
       does not introduce a new scope. Example:
            (0..2).each do |i|
              puts "inside block: i = #{i}"
            end
            puts "outside block: i = #{i}"    # >> undefined `i'
       On the other hand,
            i = 0
            (0..2).each do |i|
              puts "inside block: i = #{i}"
            end
            puts "outside block: i = #{i}"    # >> 'outside block: i = 2'
       and
            j = 0
            (0..2).each do |i|
              j = i
            end
            puts "outside block: j = #{j}"    # >> 'outside block: j = 2'
    4. The String#[Fixnum] method does not return the "character" (which
       is a string of length one) at the Fixnum position, but instead the
       ASCII character code at the position (however, this may change in
       the future). Currently, to get the character itself, use
       String#[Fixnum,1] instead.
       Furthermore, there are additional ASCII conversion methods such as
          + Integer#chr to convert from the ASCII code to the character
            65.chr    # >> "A"
          + ?char to convert from the character to the ASCII code
            ?A    # >> 65
    5. In Ruby, there are two sets of logical operators: [!, &&, ||] and
       [not, and, or]. [!, &&, ||]'s precedence is higher than the
       assignments (=, %=, ~=, /=, etc.) while [not, and, or]'s
       precedence is lower. Also note that while &&'s precedence is
       higher than ||'s, the and's precedence is the same as the or's.
    6. In the case statement
            case obj
            when obj_1
              ....
            when obj_k
              ....
       it is the "===" method which is invoked, not the "==" method.
       Also, the order is "obj_k === obj" and not "obj === obj_k".
       The reason for this order is so that the case statement can
       "match" obj in more flexible ways. Three interesting cases are
       when obj_k is either a Module/Class, a Regexp, or a Range:
          + The Module/Class class defines the "===" method as a test
            whether obj is an instance of the module/class or its
            descendants ("obj#kind_of? obj_k").
          + The Regexp class defines the "===" method as a test whether
            obj matches the pattern ("obj =~ obj_k").
          + The Range class defines the "===" method as a test whether
            obj is an element of the range ("obj_k.include? obj").
    7. Array.new(2, Hash.new) # >> [{}, {}]
       but the two array elements are identical objects, not independent
       hashes. To create an array of (independent) hashes, use the "map"
       or "collect" method:
            arr = (1..2).map {Hash.new}
       Similarly, when creating a hash of arrays, probably the following
       is not the original intention:
            hsh = Hash.new([])
            while line = gets
              if line =~ /(\S+)\s+(\S+)/
                hsh[$1] << $2
              end
            end
            puts hsh.length    # >> 0
       One correct and concise way is to write "(hash[key] ||= []) <<
       value", such as
            hsh = Hash.new
            while line = gets
              if line =~ /(\S+)\s+(\S+)/
                (hsh[$1] ||= []) << $2
              end
            end
    8. Be careful when using "mutable" objects as hash keys. To get the
       expected result, call Hash#rehash before accessing the hash
       elements. Example:
            s = "mutable"
            arr = [s]
            hsh = { arr => "object" }
            s.upcase!
            p hsh[arr] # >> nil (maybe not what was expected)
            hsh.rehash
            p hsh[arr] # >> "object"
    9. After reading data from a file and putting them into variables,
       the data type is really String. To convert them into numbers, use
       the "to_i" or "to_f" methods. If, for example, you use the "+"
       operator to add the "numbers" without calling the conversion
       methods, you will simply concatenate the strings.
       An alternative is to use "scanf"
       ([6]http://www.rubyhacker.com/code/scanf).
   10. It is advisable not to write some white space before the opening
       '(' in a method call; else, Ruby with $VERBOSE set to true may
       give you a warning.
   11. The "dot" for method call is the strongest operator. So for
       example, while in some other languages the number after the dot in
       a floating point number is optional, it is not in Ruby. For
       example, "1.e6" will try to call the method "e6" of the object 1
       (which is a Fixnum). You have to write "1.0e6".
       However, notice that although the dot is the strongest operator,
       its precedence with respect to method name may be different with
       different Ruby versions. At least in Ruby 1.6.7, "puts
       (1..3).length" will give you a syntax error; you should write
       "puts((1..3).length)" instead.
   12. In Ruby, only false and nil are considered as false in a Boolean
       expression. In particular, 0 (zero), "" or '' (empty string), []
       (empty array), and {} (empty hash) are all considered as true.
   13. Ruby variables hold references to objects and the = operator
       copies the references. Also, a self assignment such as a += b is
       actually translated to a = a + b. Therefore it may be advisable to
       be aware whether in a certain operation you are actually creating
       a new object or modifying an existing one.
   14. There is no standard, built-in deep copy in Ruby. One way to
       achieve a similar effect is by serialization/marshalling. Because
       in Ruby everything is a reference, be careful when you want to
       "copy" objects (such as by using the dup or clone method),
       especially for objects that contain other objects (such as arrays
       and hashes) and when the containment is more than one level deep.
   15. Ruby has no pre/post increment/decrement operator. For instance,
       x++ or x-- will fail to parse. More importantly, ++x or --x will
       do nothing! In fact, they behave as multiple unary prefix
       operators: -x == ---x == -----x == ......
   16. "0..k" represents a Range object, while "[0..k]" represents an
       array with a single element of type Range. For example, if
            [0..2].each do |i|
              puts "i = #{i}"
            end
       does not give what you expect, probably you should have written
            (0..2).each do |i|
              puts "i = #{i}"
            end
       or
            0.upto(2) do |i|
              puts "i = #{i}"
            end
       instead. Note also that Ruby does not have objects of type "Tuple"
       (which are immutable arrays) and parentheses are usually put
       around a Range object for the purpose of precedence grouping (as
       the "dot" is stronger than the "dot dot" in the above example).
   17. There is some subtle difference between instance variable and
       class variable. For instance variables, the order of creation does
       not matter: they simply "share" the variable. For example:
            class Base
              def initialize;     @var = 'base'; end
              def base_set_var;   @var = 'base'; end
              def base_print_var; puts @var;     end
            end

            class Derived < Base
              def initialize;        @var = 'derived'; super; end
              def derived_set_var;   @var = 'derived';        end
              def derived_print_var; puts @var;               end
            end

            d = Derived.new
            d.base_set_var;    d.derived_print_var    # >> 'base'
                               d.base_print_var       # >> 'base'
            d.derived_set_var; d.derived_print_var    # >> 'derived'
                               d.base_print_var       # >> 'derived'
       But for class variable, the order of creation does matter. In the
       following example, the derived class creates a class variable
       first, with the end result of creation of two distinct class
       variables:
            class Base
              def initialize;     @@var = 'base'; end
              def base_set_var;   @@var = 'base'; end
              def base_print_var; puts @@var;     end
            end

            class Derived < Base
              def initialize;        @@var = 'derived'; super; end
              def derived_set_var;   @@var = 'derived';        end
              def derived_print_var; puts @@var;               end
            end

            d = Derived.new
            d.base_set_var;    d.derived_print_var    # >> 'derived'
                               d.base_print_var       # >> 'base'
            d.derived_set_var; d.derived_print_var    # >> 'derived'
                               d.base_print_var       # >> 'base'
       For the classes in the inheritance chain to share a single class
       variable, the parent has to create the class variable first:
            class Base
              def initialize;     @@var = 'base'; end
              def base_set_var;   @@var = 'base'; end
              def base_print_var; puts @@var;     end
            end

            class Derived < Base
              def initialize;        super; @@var = 'derived'; end #changed
              def derived_set_var;   @@var = 'derived';        end
              def derived_print_var; puts @@var;               end
            end

            d = Derived.new
            d.base_set_var;    d.derived_print_var    # >> 'base'
                               d.base_print_var       # >> 'base'
            d.derived_set_var; d.derived_print_var    # >> 'derived'
                               d.base_print_var       # >> 'derived'

Things That Are Good to Know :-)

    a. In Ruby the "self assignment operator" goes beyond "+=, -=, *=,
       /=, %=". In particular, operators such as "||=" also exist (but
       currently not for a class variable if it is not yet defined; this
       may change in the future). Please see Table 18.4 in the
       "Programming Ruby" book for the complete list.
    b. For extensive numerical computations, consider "Numerical Ruby"
       ([7]http://www.ir.isas.ac.jp/~masa/ruby/index-e.html).
    c. For (numerical) arrays which consume a large amount of memory and
       CPU time, consider "NArray" which is part of the Numerical Ruby
       ([8]http://www.ir.isas.ac.jp/~masa/ruby/na/SPEC.en).
    d. For speeding up some parts of your Ruby code by writing them in C,
       consider "Inline"
       ([9]http://sourceforge.net/projects/rubyinline/).
    e. For translation from Ruby to C, consider "rb2c"
       ([10]http://easter.kuee.kyoto-u.ac.jp/~hiwada/ruby/rb2c/).
    f. For integration between Ruby and C/C++, consider "SWIG"
       ([11]http://www.swig.org/).
    g. For integration between Ruby and Java, consider "JRuby"
       ([12]http://jruby.sourceforge.net/).
    h. For integration between Ruby and Lua, consider "Ruby-Lua"
       ([13]http://ruby-lua.unolotiene.com/ruby-lua.whtm).
    i. For creating a stand-alone (Windows) executable, consider "exerb"
       ([14]http://exerb.sourceforge.jp/index.en.html).
    j. For manipulating raw bits, instead of using Fixnum's, consider
       "BitVector"
       ([15]http://www.ce.chalmers.se/~feldt/ruby/extensions/bitvector/).

     * For comments on this list, you may e-mail me directly at
       [16]billtj@glue.umd.edu.
     _________________________________________________________________

   Last updated: Oct 16, 2002.
   This list itself is available at
   [17]http://www.glue.umd.edu/~billtj/ruby.html.
   The plain text format is produced from the HTML format with "lynx
   -dump".
     _________________________________________________________________

References

   1. file://localhost/.automount/tulsi/home/tjb/Conf/ruby.txt
   2. http://www.ruby-lang.org/en/
   3. http://www.rubycentral.com/faq/
   4. http://rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name=pitfall
   5. http://www.rubycentral.com/book/
   6. http://www.rubyhacker.com/code/scanf
   7. http://www.ir.isas.ac.jp/~masa/ruby/index-e.html
   8. http://www.ir.isas.ac.jp/~masa/ruby/na/SPEC.en
   9. http://sourceforge.net/projects/rubyinline/
  10. http://easter.kuee.kyoto-u.ac.jp/~hiwada/ruby/rb2c/
  11. http://www.swig.org/
  12. http://jruby.sourceforge.net/
  13. http://ruby-lua.unolotiene.com/ruby-lua.whtm
  14. http://exerb.sourceforge.jp/index.en.html
  15. http://www.ce.chalmers.se/~feldt/ruby/extensions/bitvector/
  16. mailto:billtj@glue.umd.edu
  17. http://www.glue.umd.edu/~billtj/ruby.html


In This Thread

Prev Next