On Fri, Apr 23, 2004 at 01:15:51PM -0400, Austin Hastings wrote: : A12 sez: : : If your delegation object happens to be an array: : : has @:handlers handles 'foo'; : : then something cool happens. <cool rays> In this case : Perl 6 assumes that your array contains a list of potential : handlers, and you just want to call the first one that : succeeds. : : This is not clear, and I'm not liking it at the moment anyway. It has the : effect of saying: : : "If you HAS-A attribute that is an array, you cannot delegate to it, but if : you IS-A array, no worries." : : So Queue classes that start out: : : class Queue is Array {...} : : can get push/pop/splice whatever methods for free, but: : : class Queue is PersistentObject : { : has @:elements handles «push pop splice»; : : can not work (unless one of the things inside @:elements happens to be an : array).
has $:elements handles «push pop splice»; can hold an array in that case. : Also, it's not clear: : : "first one that succeeds" : : Does that mean "First one for which a matching method exists" or does it : mean "First one for which a method exists that does not C<fail> or return : undef or some other badness"? The latter is the intent. Larry