[#6954] Why isn't Perl highly orthogonal? — Terrence Brannon <brannon@...>

27 messages 2000/12/09

[#7022] Re: Ruby in the US — Kevin Smith <kevinbsmith@...>

> Is it possible for the US to develop corporate

36 messages 2000/12/11
[#7633] Re: Ruby in the US — Dave Thomas <Dave@...> 2000/12/19

tonys@myspleenklug.on.ca (tony summerfelt) writes:

[#7636] Re: Ruby in the US — "Joseph McDonald" <joe@...> 2000/12/19

[#7704] Re: Ruby in the US — Jilani Khaldi <jilanik@...> 2000/12/19

> > first candidates would be mysql and postgressql because source is

[#7705] Code sample for improvement — Stephen White <steve@...> 2000/12/19

During an idle chat with someone on IRC, they presented some fairly

[#7750] Re: Code sample for improvement — "Guy N. Hurst" <gnhurst@...> 2000/12/20

Stephen White wrote:

[#7751] Re: Code sample for improvement — David Alan Black <dblack@...> 2000/12/20

Hello --

[#7755] Re: Code sample for improvement — "Guy N. Hurst" <gnhurst@...> 2000/12/20

David Alan Black wrote:

[#7758] Re: Code sample for improvement — Stephen White <steve@...> 2000/12/20

On Wed, 20 Dec 2000, Guy N. Hurst wrote:

[#7759] Next amusing problem: talking integers (was Re: Code sample for improvement) — David Alan Black <dblack@...> 2000/12/20

On Wed, 20 Dec 2000, Stephen White wrote:

[#7212] New User Survey: we need your opinions — Dave Thomas <Dave@...>

16 messages 2000/12/14

[#7330] A Java Developer's Wish List for Ruby — "Richard A.Schulman" <RichardASchulman@...>

I see Ruby as having a very bright future as a language to

22 messages 2000/12/15

[#7354] Ruby performance question — Eric Crampton <EricCrampton@...>

I'm parsing simple text lines which look like this:

21 messages 2000/12/15
[#7361] Re: Ruby performance question — Dave Thomas <Dave@...> 2000/12/15

Eric Crampton <EricCrampton@worldnet.att.net> writes:

[#7367] Re: Ruby performance question — David Alan Black <dblack@...> 2000/12/16

On Sat, 16 Dec 2000, Dave Thomas wrote:

[#7371] Re: Ruby performance question — "Joseph McDonald" <joe@...> 2000/12/16

[#7366] GUIs for Rubies — "Conrad Schneiker" <schneik@...>

Thought I'd switch the subject line to the subject at hand.

22 messages 2000/12/16

[#7416] Re: Ruby IDE (again) — Kevin Smith <kevins14@...>

>> >> I would contribute to this project, if it

17 messages 2000/12/16
[#7422] Re: Ruby IDE (again) — Holden Glova <dsafari@...> 2000/12/16

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

[#7582] New to Ruby — takaoueda@...

I have just started learning Ruby with the book of Thomas and Hunt. The

24 messages 2000/12/18

[#7604] Any corrections for Programming Ruby — Dave Thomas <Dave@...>

12 messages 2000/12/18

[#7737] strange border-case Numeric errors — "Brian F. Feldman" <green@...>

I haven't had a good enough chance to familiarize myself with the code in

19 messages 2000/12/20

[#7801] Is Ruby part of any standard GNU Linux distributions? — "Pete McBreen, McBreen.Consulting" <mcbreenp@...>

Anybody know what it would take to get Ruby into the standard GNU Linux

15 messages 2000/12/20

[#7938] Re: defined? problem? — Kevin Smith <sent@...>

matz@zetabits.com (Yukihiro Matsumoto) wrote:

26 messages 2000/12/22
[#7943] Re: defined? problem? — Dave Thomas <Dave@...> 2000/12/22

Kevin Smith <sent@qualitycode.com> writes:

[#7950] Re: defined? problem? — Stephen White <steve@...> 2000/12/22

On Fri, 22 Dec 2000, Dave Thomas wrote:

[#7951] Re: defined? problem? — David Alan Black <dblack@...> 2000/12/22

On Fri, 22 Dec 2000, Stephen White wrote:

[#7954] Re: defined? problem? — Dave Thomas <Dave@...> 2000/12/22

David Alan Black <dblack@candle.superlink.net> writes:

[#7975] Re: defined? problem? — David Alan Black <dblack@...> 2000/12/22

Hello --

[#7971] Hash access method — Ted Meng <ted_meng@...>

Hi,

20 messages 2000/12/22

[#8030] Re: Basic hash question — ts <decoux@...>

>>>>> "B" == Ben Tilly <ben_tilly@hotmail.com> writes:

15 messages 2000/12/24
[#8033] Re: Basic hash question — "David A. Black" <dblack@...> 2000/12/24

On Sun, 24 Dec 2000, ts wrote:

[#8178] Inexplicable core dump — "Nathaniel Talbott" <ntalbott@...>

I have some code that looks like this:

12 messages 2000/12/28

[#8196] My first impression of Ruby. Lack of overloading? (long) — jmichel@... (Jean Michel)

Hello,

23 messages 2000/12/28

[#8198] Re: Ruby cron scheduler for NT available — "Conrad Schneiker" <schneik@...>

John Small wrote:

14 messages 2000/12/28

[#8287] Re: speedup of anagram finder — "SHULTZ,BARRY (HP-Israel,ex1)" <barry_shultz@...>

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

12 messages 2000/12/29

[ruby-talk:7744] Re: New to Ruby

From: Dave Thomas <Dave@...>
Date: 2000-12-20 06:23:57 UTC
List: ruby-talk #7744
takaoueda@my-deja.com writes:

> In article <m2ofy9vyeo.fsf@zip.local.thomases.com>,
>   Dave Thomas <Dave@PragmaticProgrammer.com> wrote:
> > Congratulations.
> 
> Thank you Thomas. Now I am at page 39.  If I revise
>     Song.new('title1','artist1',1), etc
> to
>     Song.new('title1', 'artst1',1).to_s, etc

A SongList is a list of Songs, rather than a list of strings, so the
original is correct.

> and use the definition of class Song at page 19 and page 21, then it
> works.  However, is there any way to rewrite the class Song and leave
> the bottom of page 39 intact?

The code examples that you are looking at actually execute to generate
the output you see in the book, so there shouldn't be any need to
rewrite class Song--the code should be correct. Let's look at the
complete code for this example:

  class SongList
    def initialize
      @songs = Array.new
    end
    def deleteFirst
      @songs.shift
    end
    def deleteLast
      @songs.pop
    end
    def append(aSong)
      @songs.push(aSong)
      self
    end
  end  
  class Song
    def initialize(name, artist, duration)
      @name     = name
      @artist   = artist
      @duration = duration
    end
    def to_s
      "Song: #{@name}--#{@artist} (#{@duration})"
    end
  end
  list = SongList.new
  list.
    append(Song.new('title1', 'artist1', 1)).
    append(Song.new('title2', 'artist2', 2)).
    append(Song.new('title3', 'artist3', 3)).
    append(Song.new('title4', 'artist4', 4))

  list.deleteFirst
  list.deleteFirst
  list.deleteLast
  list.deleteLast
  list.deleteLast

It runs, but produces no output. In the book, when you see the arrow
after a line of Ruby code, that's pointing to the value returned by
that line. That value is normally the result of 'inspect'ing the
expression. However, this is pretty ugly for classes: if we change the 
last 5 lines above to use 'p' (which does an inspect):

   p  list.deleteFirst
   p  list.deleteFirst
   p  list.deleteLast
   p  list.deleteLast
   p  list.deleteLast

we get

   #<Song:0x4018aa3c @duration=1, @artist="artist1", @name="title1">
   #<Song:0x4018aa00 @duration=2, @artist="artist2", @name="title2">
   #<Song:0x4018a988 @duration=4, @artist="artist4", @name="title4">
   #<Song:0x4018a9c4 @duration=3, @artist="artist3", @name="title3">
   nil

which isn't pretty.[1] So for this example, we'll use #puts, which
invokes the object's to_s method:[2]

   puts  list.deleteFirst
   puts  list.deleteFirst
   puts  list.deleteLast
   puts  list.deleteLast
   puts  list.deleteLast

and we get

   Song: title1--artist1 (1)
   Song: title2--artist2 (2)
   Song: title4--artist4 (4)
   Song: title3--artist3 (3)
   nil

Just like the book (which is a relief ;-)


In this example, we were simply trying to show that the methods in
SongList were indeed returning the correct Song objects.  

I hope this helps.


Dave



Footnotes: 
[1]  And it made out lines too long

[2]  How did we do that in the book? We cheated. We overrode
#inspect in class Song to call to_s. That's because the preprocessor
that generates the typeset code fragments always uses #inspect to get
the value, so we had to change the input slightly to fool it.



In This Thread