El jue., 27 sept. 2018 a las 3:51, ToddAndMargo (<[email protected]>)
escribió:
> On 9/26/18 6:31 PM, ToddAndMargo wrote:
> > On 9/26/18 6:18 PM, Curt Tilmes wrote:>
> > > > The methods don't take []. You are calling [] on the thing
> > that the
> > > > methods return.
> >
> >>>
> >>> Yes, I know. And it is human readable too. It is one of the
> >>> many reasons I adore Perl 6.
> >>>
> >>> Where in
> >>> multi method words(Str:D $input: $limit = Inf --> Positional)
> >>> does it state that "words" will do that? Not all methods will.
> >>> So it need to be stated when they will.
> >>>
> >>>
> >
> >
> >
> > > The part where it says "--> Positional" says the thing that gets
> > > returned is Positional.
> > >
> > > A Positional thing has all sorts of methods and operators you can use,
> > > including []
> > >
> > > Not all methods will, of course. Only those that say "--> Positional"
> > > return a Positional that acts like that.
> > >
> > > Curt
> >
> > Hi Curt,
> >
> > Perfect! Thank you!
> >
> > So all methods that respond with --> Positional will accept []
> >
> > Awesome!
> >
> > -T
>
>
>
> I do believe the reason I spaced on this was that when I see "-->"
> what goes through my head is "this is the value(s) returned".
> I had not idea it would reflect backwards and affect the method.
>
It does not.
say "Flim Flam Flum".words[2] # OUTPUT: «Flum»
is exactly the same as
say "Flim Flam Flum".words()[2] # OUTPUT: «Flum»
And exactly the same as
say "Flim Flam Flum".words(Inf)[2] # OUTPUT: «Flum»
And exactly the same as
my @flim-flam-flum = "Flim Flam Flum".words; # @flim-flam-flum carries
an @, ergo it's a Positional
say @flim-flam-flum[2] # OUTPUT: «Flum»
In Perl 6 you can chain calls, that's what is meant by postcircumfix, it
means you can put the operator like thing (in this case, []) _behind_
(post) the thing you are calling, plus you are putting the arguments
_inside_ the operator (that's the circumfix part). You can also do
say "Flim Flam Flum".words[1,2][0] # OUTPUT: «Flam»
You are first post-circumfixing [] over the return value of words, getting
2 elements in a Positional (an List in this case, Positional is a Role, not
a Class), and them post-circumfixing again getting the first of these two
elements. You can do this to exhaustion, as long as it's an object method
or a post-circumfix operator, chaining the one after the other. None of
them is "reflecting" on anything, you are just chaining calls, which is a
nice and compact thing to do.
Cheers
--
JJ