From: Yukihiro Matsumoto Date: 2007-01-22T12:26:42+09:00 Subject: Re: Minor Change Proposal for Classes 'Object' and 'Method' Hi, In message "Re: Minor Change Proposal for Classes 'Object' and 'Method'" on Mon, 22 Jan 2007 10:19:07 +0900, dblack@wobblini.net writes: |> a.x(args) |> |> given that we can invoke the particular method, message "x" passing is |> done somewhere in above sequence, and "a" is a receiver of the passing. | |But what does: | | m = a.method(:x) | |represent -- *without* making the call to the method? At that point, |there has been no event (direct or indirect) where a has received "x". |All we've done is create a Method object, based on a's interface. The |only message-receiving is a receiving "method", but not "x". Ordinary message passing a.x does the following steps (1) retrieve a class of the object a. (2) look-up method table in a class by name x (3) if it doesn't exist, looks for super-class table (4) invoke a method with self bound to the object a. whereas a.method(:x) does steps 1 through 3, and creates a method object reserved for the 4th step. When we can call the object a in the former sequence a receiver, what is wrong calling receiver too in the latter sequence, even though target or bound_object is more accurate. Do you think possible confusing critical? matz.