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 $r = "[" ~ self.base.ele[self.offset].gist; # why
my @sl = self.base.ele[self.offset .. *];
my $sg := self.base;
loop ($_=self.base.next; $_.defined; $_:=$_.next) { @sl.append: .ele }
my @sl := self.base.ele[self.offset+1 .. *];
return "[" ~ @sl.Str ~ "]"
loop {
{ $r ~= " $_" } for @sl;
$sg := $sg.next;
last unless $sg.defined;
@sl := $sg.ele
}
return $r ~ "]"
}
}