[#14464] who uses Python or Ruby, and for what? — ellard2@...01.fas.harvard.edu (-11,3-3562,3-3076)

A while ago I posted a request for people to share their experiences

12 messages 2001/05/01

[#14555] Ruby as a Mac OS/X scripting language — Dave Thomas <Dave@...>

10 messages 2001/05/02

[#14557] Arggg Bitten by the block var scope feature!!! — Wayne Scott <wscott@...>

13 messages 2001/05/02

[#14598] Re: Arggg Bitten by the block var scope feature!!! — "Conrad Schneiker" <schneik@...>

# On Thu, 3 May 2001, Wayne Scott wrote:

9 messages 2001/05/03

[#14636] Yet another "About private methods" question — Eric Jacoboni <jacoboni@...2.fr>

I'm still trying to figure out the semantics of private methods in Ruby.

39 messages 2001/05/04
[#14656] Re: Yet another "About private methods" question — Dave Thomas <Dave@...> 2001/05/04

Eric Jacoboni <jaco@teaser.fr> writes:

[#14666] Ruby and Web Applications — "Chris Montgomery" <monty@...> 2001/05/04

Greetings from a newbie,

[#14772] Re: Ruby and Web Applications — Jim Freeze <jim@...> 2001/05/07

On Sat, 5 May 2001, Chris Montgomery wrote:

[#14710] Why's Ruby so slow in this case? — Stefan Matthias Aust <sma@3plus4.de>

Sure, Ruby, being interpreted, is slower than a compiled language.

12 messages 2001/05/05

[#14881] Class/Module Information — "John Kaurin" <jkaurin@...>

It is possible to modify the following code to produce

18 messages 2001/05/09

[#15034] Re: calling .inspect on array/hash causes core dump — ts <decoux@...>

>>>>> "A" == Andreas Riedl <viisi@chello.at> writes:

15 messages 2001/05/12

[#15198] Re: Q: GUI framework with direct drawing ca pabilities? — Steve Tuckner <SAT@...>

Would it be a good idea to develop a pure Ruby GUI framework built on top of

13 messages 2001/05/15

[#15234] Pluggable sorting - How would you do it? — "Hal E. Fulton" <hal9000@...>

Hello all,

16 messages 2001/05/16

[#15549] ColdFusion for Ruby — "Michael Dinowitz" <mdinowit@...2000.com>

I don't currently use Ruby. To tell the truth, I have no real reason to. I'd

12 messages 2001/05/22

[#15569] I like ruby-chan ... — Rob Armstrong <rob@...>

Ruby is more human(e) than Python. We already have too many animals :-).

15 messages 2001/05/23

[#15601] How to avoid spelling mistakes of variable names — ndrochak@... (Nick Drochak)

Since Ruby does not require a variable to be declared, do people find

13 messages 2001/05/23

[#15734] java based interpreter and regexes — "Wayne Blair" <wayne.blair@...>

I have been thinking about the java based ruby interpreter project, and I

48 messages 2001/05/25

[#15804] is it possible to dynamically coerce objects types in Ruby? — mirian@... (Mirian Crzig Lennox)

Greetings to all. I am a newcomer to Ruby and I am exploring the

13 messages 2001/05/27
[#15807] Re: is it possible to dynamically coerce objects types in Ruby? — matz@... (Yukihiro Matsumoto) 2001/05/27

Hi,

[#15863] Experimental "in" operator for collections — Stefan Matthias Aust <sma@3plus4.de>

There's one thing where I prefer Python over Ruby. Testing whether an

13 messages 2001/05/28

[#15925] Re: Block arguments vs method arguments — ts <decoux@...>

>>>>> "M" == Mike <mike@lepton.fr> writes:

43 messages 2001/05/29
[#16070] Re: Block arguments vs method arguments — "Hal E. Fulton" <hal9000@...> 2001/05/31

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

[#16081] Re: Block arguments vs method arguments — Sean Russell <ser@...> 2001/05/31

On Thu, May 31, 2001 at 11:53:17AM +0900, Hal E. Fulton wrote:

[#16088] Re: Block arguments vs method arguments — Dan Moniz <dnm@...> 2001/05/31

At 11:01 PM 5/31/2001 +0900, Sean Russell wrote:

[#15954] new keyword idea: tryreturn, tryturn or done — Juha Pohjalainen <voidjump@...>

Hello everyone!

12 messages 2001/05/29

[ruby-talk:14808] RE: Polymorphic methods

From: "Benjamin J. Tilly" <ben_tilly@...>
Date: 2001-05-07 20:24:45 UTC
List: ruby-talk #14808
>===== Original Message From "J J" <jj5412@earthlink.net> =====
>In C++ you can have polymorphic methods such as
>
>doIt( String s ) {
>...
>}
>
>doIt( Integer i ) {
>...
>}
>
>Is there a way to duplicate this behavior without resorting to:
>
>def doIt( object )
>    if object.type == String
>    ...
>    elsif object.type == Numeric
>    ...
>    end
>end

Yes.  Two solutions.

1. Create a hash whose keys are the types of object you want, and
   whose values are the subroutines you want.  (You can create
   anonymous subroutines with the "proc" method in the kernel.)
   Then you can do this:

     def doIt (object)
       $action[object.type][object]
     end

   Feel free to add existence checks and a default case.  Also
   you may want to add logic to follow the inheritance hierarchy
   in case someone tries to subclass a type you know about.  This
   is called "dispatching on a hash lookup".

2. Create a method in each class that you want and then call the
   method.  This is how Ruby already converts things to integers,
   floats, strings.  If you do this be sure to give things a good
   name.  Like "to_month".  Now you get:

     def doIt (object)
       object.to_month
     end

   This is called "dispatching on a method lookup".  For reasons
   that you can see, there is little need to have a function to
   wrap the dispatch.  What it is good for is trapping the case
   where you are missing the method.  In that case you can either
   have the method as above, or you can put a default method in
   class Object.

I have used both methods in multiple languages.  There are some
tradeoffs.

>I'm thinking of instances (for example) where you can create an object from
>several different objects passed to the constructor. E.g.
>
>m = Month.new(12)
>m = Month.new('December')
>m = Month.new(anotherMonth)
>
>thus, Month.initialize has to have a case or if statement.

This is the kind of thing where you probably want to work right
if someone subclasses a class.  I would therefore be likely to
choose dispatching on a method lookup so I didn't have to follow
the inheritance manually.

Cheers,
Ben

In This Thread

Prev Next