Arlen Cuss wrote: > On Mon, Feb 25, 2008 at 12:03 PM, 7stud -- <bbxx789_05ss / yahoo.com> wrote: > >> class Dog >> def secret_code=(seed) >> @secret_code = seed * 10 + 2 >> end >> end >> >> d = Dog.new >> return_val = (d.secret_code=(3) ) >> puts return_val #should this reveal the secret code? >> > > Yes. What would you like it to return? The point is, you're doing > d.secret_code = 3 -- you're saying the secret code *is* 3, so actually > setting it to something else is a bit misleading, don't you think? Actually, you're saying "Send the message '.secret_code=(3)' to d" It's up to d to decide what that means and what happens next. Suppose secret_code=(x) checks that the given value meets some criteria (say, is a positive int), and if not, uses the value 0. I might want the method to then return a valid value, not simply what was passed in. -- James Britt "We are using here a powerful strategy of synthesis: wishful thinking." - H. Abelson and G. Sussman (in "The Structure and Interpretation of Computer Programs)