From: Matthew Moss Date: 2008-12-13T05:58:20+09:00 Subject: Re: parallel method return value On Dec 12, 2008, at 2:21 PM, Louis-Philippe wrote: > Thanks Matthew, > > "No, because what was provided before wasn't wrong." > > Yeah... I believe you, but would really like it to be else! Think of it this way... def foo return 1, 2, 3 end a = foo Now, you want a to be 1, but Ruby would need the power to read minds to accommodate that. See, because if I do the same, I want a to be [1, 2, 3]. How is foo supposed to figure that out? Or why should your want be more/less preferable than my want? Simply, the interpreter can't know. There has to be some syntax or something that gives foo, or the assignment to a, that key information. Telling foo would be passing an arg: def foo(nargs) return [1, 2, 3][0...nargs] end a = foo(1) Any of the other examples come after foo is done, so: def foo return 1, 2, 3 end a, = foo a = foo[0] a = foo.first All three of those do the same... assign 1 to a. The latter two request specifically the first item, while the first does parallel assignment (of array components to particular variables... in this case, only a). Since you seem interested in parallel assignment to a variable number of variables, the first seems appropriate. Granted, forgetting the comma might be easy, but there's no way for foo to know that you want a = foo to return 1 and that someone else that does a = foo wants [1, 2, 3].