Moritz Lenz wrote:
> From S29:
>
> : =item end
> :
> :  our Any method end (@array: ) is export
> :
> : Returns the final subscript of the first dimension; for a one-dimensional
> : array this simply the index of the final element.  For fixed dimensions
> : this is the declared maximum subscript.  For non-fixed dimensions
> (undeclared
> : or explicitly declared with C<*>), the actual last element is used.
>
>
> The last sentence  seems to suggest that not the index of the last
> element is returned, but the element itself. (Which I think is pretty weird)
>
>
> And S02:
>
> : The C<$#foo> notation is dead.  Use C<@foo.end> or C<@foo[*-1]> instead.
> : (Or C<@foo.shape[$dimension]> for multidimensional arrays.)
>
> That doesn't clean it up totally either.
>
> So what should <a b c>.end return? 2 or 'c'?
> (Currently pugs and elf return 2, rakudo 'c').

@foo[*-1] would return 'c'.  @foo[*-1]:k would return 2.  So the
question is whether @foo.end returns @foo[*-1] or @foo[*-1]:k.

You might also allow 'end' to take an adverb the way that 'postfix:[]'
does, allowing you to explicitly choose what you want returned; but
that still doesn't answer the question of what to return by default.

-- 
Jonathan "Dataweaver" Lang

Reply via email to