[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Just Found Integer

James Gray

10/3/2004 3:48:00 AM

I'm happily devouring the new Pickaxe and early on I run across an
example like:

... Integer( string_holding_number ) ...

This syntax REALLY surprised me.

1. The book has mentioned multiple times how C's abs(num) or Java's
Math.abs(num) would be num.abs in Ruby.

2. Method names in Ruby start with a lowercase letter. (As an aside,
this made it hard for me to even find this method. I tried ri first and
got the class. Luckily, the book's excellent index got me there.)

3. The above ends up feeling like a constructor, now that I've read
the process, but doesn't use constructor syntax either.

I'll confess to not being very "Duck Typing" aware, so I assume I'll
understand the need for this method after I cover the chapter on that
topic. In the meantime though, can I just ask where this syntax came
from??? I get that it's the resulting object name (I found Array(),
Float() and String() too), but it still seemed pretty radical to me.

I'm not complaining, by the way. I'm just trying to understand.

Thanks.

James Edward Gray II



3 Answers

Ara.T.Howard

10/3/2004 4:43:00 AM

0

T. Onoma

10/3/2004 5:04:00 AM

0

On Sunday 03 October 2004 12:54 am, Ara.T.Howard@noaa.gov wrote:
> been there for a while:
>
> harp:~ > /usr/bin/ruby -v -e'p Integer(42)'
> ruby 1.6.8 (2002-12-24) [i386-linux-gnu]
> 42
>
> it's just a method that happens to also be a constant.
>
> harp:~ > /usr/bin/ruby -v -e'p Kernel.methods.grep(/Int/)'
> ruby 1.6.8 (2002-12-24) [i386-linux-gnu]
> ["Integer"]
>
> think of it like Kernel.open being shorthand for File::open - it makes
> dirty scipts feel short and sweet - but it's really a class method of File.
> the Integer and friend methods are better than, say String#to_i because
>
> harp:~ > /usr/bin/ruby -v -e'p "42abc".to_i'
> ruby 1.6.8 (2002-12-24) [i386-linux-gnu]
> 42
>
> harp:~ > /usr/bin/ruby -v -e'p Integer("42abc")'
> ruby 1.6.8 (2002-12-24) [i386-linux-gnu]
> -e:1:in `Integer': invalid value for Integer: "42abc" (ArgumentError)
> from -e:1
>
> i use them all the time because of this - if fact, my post from earlier
> today has the Integer() contruct in it ;-)

But that sort of begs the question. Why not Integer['42abc'] ?

T.



Yukihiro Matsumoto

10/3/2004 11:31:00 PM

0

Hi,

Methods with class name constant e.g. Integer, String, etc. are
converters in convention.

In message "Re: Just Found Integer()"
on Sun, 3 Oct 2004 14:04:22 +0900, "trans. (T. Onoma)" <transami@runbox.com> writes:

|But that sort of begs the question. Why not Integer['42abc'] ?

It had proposed before. But I felt something wrong with that where we
had both Array() (converter) and Array[] (initializer).

matz.