[Python-ideas] set.add() return value

Raymond Hettinger python at rcn.com
Tue Feb 17 04:14:31 CET 2009

>> As I mentioned in another post, this API is counterintuitive for
>> anyone who is used to other languages where operations like
>> set.add() always returns self and lets them write code like:
>>     myset.add(x).add(y).add(z)
> Which language has that?

I think there a several.

Smalltalk comes to mind:
         addAll: aCollection
          Adds all the elements of 'aCollection' to the receiver, answer aCollection

Looks like Objective C takes the same approach:
  Method: IndexedCollection @keyword{-insertObject:} newObject @keyword{atIndex:} (unsigned)index
  @deftypemethodx IndexedCollecting {} @keyword{-insertElement:} (elt)newElement @keyword{atIndex:} (unsigned)index
  returns self.

Also, Ruby uses the style of having mutating methods return self:

 arr.fill( anObject ) -> arr
arr.fill( anObject, start [, length ] ) -> arr
arr.fill( anObject, aRange ) -> arr

 hsh.update( anOtherHash ) -> hsh

Adds the contents of anOtherHash to hsh, overwriting entries with duplicate keys with those from anOtherHash.

      h1 = { "a" => 100, "b" => 200 }
      h2 = { "b" => 254, "c" => 300 }
      h1.update(h2)  » {"a"=>100, "b"=>254, "c"=>300}


I haven't checked other languages but am sure I've seen this style show-up in a number of places.


More information about the Python-ideas mailing list