On Thu, Apr 23, 2009 at 3:54 AM, Robert Klemme <shortcutter / googlemail.com> wrote: > More precisely: they must have identical /signatures/. This is polymorphism. > > If only the name is identical, it is /overloading/. Overloading can > occur in a single class or in a class hierarchy. ... > Of course the story gets more complicated if you have different length > argument lists etc. I'm not disagreeing with you Robert, but I need to point out that the concept or equivalent of the 'name' of a method varies with the language, to avoid confusion, let's call the token which identifies a group of polymorphic methods the method token. In Ruby, the method token is quite simple, it's a simple identifier. def foo end the name of this method is foo. In Smalltalk, or Objective-C, the token (called a method selector in Smalltalk, or just a selector in Objective-C) is either as simple identifier for a method with no parameters which Smalltalk calls unary messages, or the concatenation one or more simple identifiers each followed by a colon one for each parameter called keyword messages in Smalltalk. Smalltalk also has binary messages/selectors for things like arithmetic and comparison methods, these selectors are s string of characters from a restricted set, e.g. + or <= MacRuby uses a hybrid of the Ruby and Objective-C selector, in MacRuby, a call of the form x.foo(1, :bar => 2, :baz => 3) or using the Ruby 1.9 syntax x.foo(1, bar: 2, baz: 3) uses a selector of foo:bar:baz mapping the Ruby practice of using a final hash parameter to provide 'keyword arguments' to Objective-C style selectors (actually directly to Objective-C selectors). I'm not sure what tricks MacRuby has up its sleeve for dealing with the fact that in normal Ruby x.foo(1, :bar => 2, :baz => 3) and x.foo(1, :baz => 3, :bar => 2) invoke the same method, and have the same effect. In a statically typed OO language like C++ or Java, the method token also tied to the highest class in the hierarchy of a type which introduces a name. If overloading/generics are supported by the language then it may also be tied to the parameter types. It's these kind of subtleties which confound multi-language discussions. -- Rick DeNatale Blog: http://talklikeaduck.denhaven2.com/ Twitter: http://twitter.com/RickDeNatale WWR: http://www.workingwithrails.com/person/9021-rick-denatale LinkedIn: http://www.linkedin.com/in/rickdenatale