From: "J.Herre" Date: 2003-02-12T05:03:31+09:00 Subject: Re: value of assignment (Re: Order of the value of an expression changed? (PR#579)) On Monday, February 10, 2003, at 11:33 PM, ts wrote: > pigeon% cat b.rb > #!/usr/bin/ruby -Isrc > require 'bdb' > bdb = BDB::Btree.open("tmp/aa", nil, "w") > bdb.set_partial(0, 2) > if (bdb["blue"] = "XYZ") == bdb["blue"] > puts "OK #{bdb["blue"]}" > end > pigeon% > I see your point. I guess maybe you're right. It makes the most sense if one adopts the policy of having assignment methods return the result of the assignment. I guess it's not ruby's job to prevent people from shooting themselves in the foot if they don't want to do that. FWIW. The case that got me thinking was ((a.b = 42) == a) which does not seem clear. Also I think it's easier to explain why (bdb["blue"] = "XYZ") != bdb["blue"] under the new behavior, than why (bdb["blue"] = "XYZ") == bdb["blue"] doesn't tell you anything about the value of bdb["blue"] under the old. You'd still need to test that (bdb["blue"] == "XY") to know that the assignment worked as expected.