[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

Method notation question

Avdi Grimm

1/22/2007 4:00:00 PM

I've been using Ruby for years, and it just occurred to me to ask:
where did the convention of referring to methods using a
hash/pound/octothorpe symbol (#), as in "#foo" or "MyClass#bar", come
from? Is it a Smalltalk thing, or what?

Avdi

14 Answers

Curtis Summers

1/22/2007 4:08:00 PM

0

Avdi Grimm wrote:
> where did the convention of referring to methods using a
> hash/pound/octothorpe symbol (#), as in "#foo" or "MyClass#bar", come
> from?

Isn't this a PickAxe convention to differentiate the class methods
(MyClass.class_method) from the instance methods
(MyClass#instance_method)?

Dave Thomas

1/22/2007 5:01:00 PM

0


On Jan 22, 2007, at 10:10 AM, Curtis Summers wrote:

> Isn't this a PickAxe convention to differentiate the class methods
> (MyClass.class_method) from the instance methods
> (MyClass#instance_method)?


It predated the PickAxe--it was in a lot of Ruby documentation before
that.

FWIW, I now regret carrying that forward into the book. I think I'd
probably do

string (in String)

rather than String#strip if I were doing it again.

Ara.T.Howard

1/22/2007 5:05:00 PM

0

Gary Wright

1/22/2007 5:20:00 PM

0


On Jan 22, 2007, at 12:04 PM, ara.t.howard@noaa.gov wrote:
> i like
>
> File::class_method
>
> File.instance_method
[...]
>
> and is consitent with actual calling conventions.

Huh? Maybe you mean: file.instance_method (lower case f).

file.gets # ok, assuming file is an instance of File
File.gets # no such method

Gary Wright




Dave Thomas

1/22/2007 5:31:00 PM

0


On Jan 22, 2007, at 11:04 AM, ara.t.howard@noaa.gov wrote:

> i like
>
> File::class_method
>
> File.instance_method


The problem with that is that both are valid calling sequences for
class methods. If I'd used the following in the book

String.split

I'll get lots of email saying "when I type String.split it doesn't work"

I toyed for a while with the Smalltalk-like a_string.split, but
that's ugly and confusing. It's what I use in the library reference,
because I set up the context for a_string in the description of the
constructor. However, I just don't think it would work in narrative
body text.

Daniel Berger

1/22/2007 6:49:00 PM

0


ara.t.howard@noaa.gov wrote:
> On Tue, 23 Jan 2007, Dave Thomas wrote:
>
> >
> > On Jan 22, 2007, at 10:10 AM, Curtis Summers wrote:
> >
> >> Isn't this a PickAxe convention to differentiate the class methods
> >> (MyClass.class_method) from the instance methods
> >> (MyClass#instance_method)?
> >
> >
> > It predated the PickAxe--it was in a lot of Ruby documentation before that.
> >
> > FWIW, I now regret carrying that forward into the book. I think I'd probably
> > do
> >
> > string (in String)
> >
> > rather than String#strip if I were doing it again.

Ick.

> i like
>
> File::class_method
>
> File.instance_method
>
> the reason is that both work in the shell without funky quoting unlike
>
> ri 'File#instance_method' # egads that's a comment!
>
> and is consitent with actual calling conventions.
>
> using parens wouldn't do ri users any favours i think...
>
> 2 cts.

The obvious solution is to modify irb so that it understands that
notation. :)

Knowing Mauricio, he's probably already done it. ;)

Regards,

Dan

Daniel Schierbeck

1/22/2007 6:50:00 PM

0

On Tue, 2007-01-23 at 02:01 +0900, Dave Thomas wrote:
> On Jan 22, 2007, at 10:10 AM, Curtis Summers wrote:
>
> > Isn't this a PickAxe convention to differentiate the class methods
> > (MyClass.class_method) from the instance methods
> > (MyClass#instance_method)?
>
>
> It predated the PickAxe--it was in a lot of Ruby documentation before
> that.
>
> FWIW, I now regret carrying that forward into the book. I think I'd
> probably do
>
> string (in String)
>
> rather than String#strip if I were doing it again.

I must confess I really like the haystack syntax, especially because
it's not valid calling syntax in Ruby, but also because it's very
concise.


Cheers,
Daniel


Ara.T.Howard

1/22/2007 7:55:00 PM

0

Ara.T.Howard

1/22/2007 7:57:00 PM

0

Gary Wright

1/22/2007 8:17:00 PM

0


On Jan 22, 2007, at 2:56 PM, ara.t.howard@noaa.gov wrote:
> modifying ri can't address the issue. the issue is that if one
> types this at
> the shell prompt
>
> ~ > ri String#split
>
> #^^^^^
> #^^^^^
> this is a comment in the __shell__
>
> so ri never see anything after the '#'. that's why we have to type
>
> ri 'String#split'

What shell are you using? Bash and ksh seem to accept 'ri String#split'
just fine. I don't think they consider # the start of a comment unless
it is preceded by white space.

Gary Wright