On 12/31/20 1:56 PM, Brad Gilbert wrote:
It does not look like an array from 0 to ($nCount - 1). It only iterates like that.

It is a Range object from 0 to $nCount excluding $nCount.

     ^9 === Range.new( 0, 9, :excludes-max ) # True
     0 ~~ ^9 # True
     1 ~~ ^9 # True
     0.5 ~~ ^9 # True
     8 ~~ ^9 # True
     8.99999 ~~ ^9 # True

     9 ~~ ^9 # False

In the case of `for ^9 {…}` it iterates starting at 0, and continuing to just before 9.

It does that because `for` iterates the Range object.

It does NOT store any values other than the min, max and either excludes.

An array would store the values in the middle. Which would be a waste of memory.
Which is why it does not do that.

On Wed, Dec 30, 2020 at 8:09 PM ToddAndMargo via perl6-users <perl6-us...@perl.org <mailto:perl6-us...@perl.org>> wrote:

    On 12/30/20 5:39 PM, ToddAndMargo via perl6-users wrote:
     > Hi All,
     >
     > In the following for loop:
     >
     >      for ^$nCount -> $i {
     >
     > What is the ^ doing?
     >
     > Confused again,
     > -T

    Used in context, the ^ makes the integer $nCount look
    like an array of 0 to ($nCount - 1).  Am I missing
    something?

    my $x=4;
    for ^$x -> $i { print "i = $i\n"; }

    i = 0
    i = 1
    i = 2
    i = 3



Thank you!

Reply via email to