[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

segmented method names

Jan Hegewald

5/8/2008 11:56:00 AM

[Note: parts of this message were removed to make it a legal post.]

Dear all,
in Objective-C it is possible to split a method name into several
segments to be able to put a meaningful description before each
argument, like
(BOOL)containsPointX:(int)x Y:(int)y

is there a ruby way to achieve something similar?

Many TIA,
-- Jan



5 Answers

Sandro Paganotti

5/8/2008 12:32:00 PM

0

A solution can be:

#function
def contains_point(opts = { :x=>nil, :y=>nil })

end

# call
contains_point :x=>value, :y=>value





On Thu, May 8, 2008 at 11:56 AM, Jan Hegewald <hegewald@irmb.tu-bs.de> wrote:
> Dear all,
> in Objective-C it is possible to split a method name into several segments
> to be able to put a meaningful description before each argument, like
> (BOOL)containsPointX:(int)x Y:(int)y
>
> is there a ruby way to achieve something similar?
>
> Many TIA,
> -- Jan
>
>
>



--
Go outside! The graphics are amazing!

Rick DeNatale

5/8/2008 12:49:00 PM

0

On Thu, May 8, 2008 at 8:32 AM, Sandro Paganotti
<sandro.paganotti@gmail.com> wrote:
> On Thu, May 8, 2008 at 11:56 AM, Jan Hegewald <hegewald@irmb.tu-bs.de> wrote:
> > in Objective-C it is possible to split a method name into several segments
> > to be able to put a meaningful description before each argument, like
> > (BOOL)containsPointX:(int)x Y:(int)y
> >
> > is there a ruby way to achieve something similar?> A solution can be:
>
> #function
> def contains_point(opts = { :x=>nil, :y=>nil })
>
> end
>
> # call
> contains_point :x=>value, :y=>value

And in Ruby 1.9 you can also use the new hash literal syntax in the
call so it becomes:

contains_point x: value y: value

Apple's RubyCocoa, which is implementing Ruby on the Objective-C
runtime actually turns this into an objective-c call.

However, the semantics of Ruby keyword/hash option parameters are
slightly different from the Smalltalk inspired Objective-C method
selectors. In Smalltalk/ObjectiveC x:y: is a different message and
will find a different method than y:x:, whereas Ruby keyword/hash
parameters are order independent and aren't involved in resolving a
message to a method.

--
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denh...

Nobuyoshi Nakada

5/9/2008 3:32:00 AM

0

Hi,

At Thu, 8 May 2008 21:49:06 +0900,
Rick DeNatale wrote in [ruby-talk:301103]:
> And in Ruby 1.9 you can also use the new hash literal syntax in the
> call so it becomes:
>
> contains_point x: value y: value

You forgot a comma between first value and y:.

> However, the semantics of Ruby keyword/hash option parameters are
> slightly different from the Smalltalk inspired Objective-C method
> selectors. In Smalltalk/ObjectiveC x:y: is a different message and
> will find a different method than y:x:, whereas Ruby keyword/hash
> parameters are order independent and aren't involved in resolving a
> message to a method.

And the same selector can duplicate, x:x:x: is valid and
differs from x:, but it's impossible with a hash.

--
Nobu Nakada

Jan Hegewald

5/9/2008 12:13:00 PM

0

Hi,

thank you for all the suggestions. The Hash solution seem to be a =20
feasible workaround. I=B4ll try that. To bad there is no "real" way to =20=

split the name in ruby...


Cheers,
-- Jan




Rick DeNatale

5/9/2008 12:56:00 PM

0

On Thu, May 8, 2008 at 11:31 PM, Nobuyoshi Nakada <nobu@ruby-lang.org> wrote:
> Hi,
>
> At Thu, 8 May 2008 21:49:06 +0900,
> Rick DeNatale wrote in [ruby-talk:301103]:
>> And in Ruby 1.9 you can also use the new hash literal syntax in the
>> call so it becomes:
>>
>> contains_point x: value y: value
>
> You forgot a comma between first value and y:.

You are correct of course, thanks.

>> However, the semantics of Ruby keyword/hash option parameters are
>> slightly different from the Smalltalk inspired Objective-C method
>> selectors. In Smalltalk/ObjectiveC x:y: is a different message and
>> will find a different method than y:x:, whereas Ruby keyword/hash
>> parameters are order independent and aren't involved in resolving a
>> message to a method.
>
> And the same selector can duplicate, x:x:x: is valid and
> differs from x:, but it's impossible with a hash.

Good point.

--
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denh...