VList: Difference between revisions
Content added Content deleted
(→{{header|Perl 6}}: let go of the constructor ; use .Bool to check for emptiness and fix a bug ; suppress warning with .gist ; golfing here and there) |
(→{{header|Perl 6}}: rewrite method gist, forget about the warning, it did work, my bad ..) |
||
Line 848: | Line 848: | ||
method Index(Int $i is copy --> vEle) { # method to locate the kth element |
method Index(Int $i is copy --> vEle) { # method to locate the kth element |
||
if $i ≥ 0 { |
if $i ≥ 0 { |
||
$i += self.offset; |
loop ( $i += self.offset, $_ = self.base; $_.defined; $_ := $_.next) { |
||
loop ( $_ = self.base; $_.defined; $_ := $_.next) { |
|||
($i < my $len = .ele.elems) ?? return .ele[$i] !! $i -= $len |
($i < my $len = .ele.elems) ?? return .ele[$i] !! $i -= $len |
||
} |
} |
||
Line 889: | Line 888: | ||
method gist { # (mis)used to create output similar to Go/Kotlin |
method gist { # (mis)used to create output similar to Go/Kotlin |
||
return '[]' unless self.base.ele.Bool; |
return '[]' unless self.base.ele.Bool; |
||
my |
my @sl = self.base.ele[self.offset .. *]; |
||
loop ($_=self.base.next; $_.defined; $_:=$_.next) { @sl.append: .ele } |
|||
return "[" ~ @sl.Str ~ "]" |
|||
loop { |
|||
{ $r ~= " $_" } for @sl; |
|||
$sg := $sg.next; |
|||
last unless $sg.defined; |
|||
@sl := $sg.ele |
|||
} |
|||
return $r ~ "]" |
|||
} |
} |
||