From: Rick DeNatale Date: 2008-05-08T21:49:06+09:00 Subject: Re: segmented method names On Thu, May 8, 2008 at 8:32 AM, Sandro Paganotti wrote: > On Thu, May 8, 2008 at 11:56 AM, Jan Hegewald 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.denhaven2.com/