From: nobu@... Date: 2014-01-25T03:13:08+00:00 Subject: [ruby-core:60085] [ruby-trunk - Bug #9448] [Open] Assignment with overridden []= returns return value of method rather than new value Issue #9448 has been updated by Nobuyoshi Nakada. Status changed from Rejected to Open Indeed, thank you. ---------------------------------------- Bug #9448: Assignment with overridden []= returns return value of method rather than new value https://bugs.ruby-lang.org/issues/9448#change-44588 * Author: Simon Eskildsen * Status: Open * Priority: Normal * Assignee: * Category: * Target version: current: 2.2.0 * ruby -v: ruby 2.2.0dev * Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- When calling []= the assignment will return the return value of the []= method, rather than the value of the right-hand side, which is the behaviour in 2.1.0-p0, 2.0.0-p353 and 1.9.3-p484. Example code: class Animal def []=(key, new_value) "walrus" end end animal = Animal.new puts animal['current'] = "unicorn" In trunk, this returns 'walrus'. In other releases (tested in the ones mentioned above), this returns 'unicorn'. -- http://bugs.ruby-lang.org/