作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下类(class):
class Names {
has @!names;
method add-name( $name ) { @!names.push($name) }
multi method AT-POS( ::?CLASS:D: $index ) {
my $new-names-obj = Names.new;
for @!names[$index] -> $name {
$new-names-obj.add-name($name);
}
return $new-names-obj;
}
method gist {
@!names.join("\n")
}
}
Names
对象和返回值
Names
其元素从
Names
目的。例如:
my $original = Names.new;
$original.add-name($_) for <jonathan joseph jotaro josuke giorno>;
my $sliced-off = $original[0..2];
say $original.^name; #=> Names
say $original; #=> jonathan, joseph, jotaro, josuke, giorno
say $sliced-off.^name; #=> List
say $sliced-off; #=> (jonathan joseph jotaro)
AT-POS
起,范围就不是这样了最终被多次调用并将结果收集在列表中。因此我想知道是否可以返回单个对象
$sliced-off
, 不是结果列表,当使用范围时。
最佳答案
AT-POS
方法旨在让对象充当 Positional
目的。这不是你想要的。你要object[slice]
DWIM。
实现这一目标的最佳方法是创建一个 postcircumfic:<[ ]>
(多)候选对象:
class A {
method slice(@_) {
say @_; # just to show the principle
}
}
sub postcircumfix:<[ ]>($object, *@indices) {
constant &slicer = &postcircumfix:<[ ]>;
$object ~~ A
?? $object.slice(@indices)
!! slicer($object, @indices)
}
A.new[1,2,4,5]; # [1 2 4 5]
my @a = ^10; # check if foo[] still works
say @a[1,2,4,5]; # (1 2 4 5)
@a[]
的共同行为保留,我们保存系统的值
postcircumfix:[ ]>
在编译时(带有
constant
)。然后在运行时,当对象不是正确的类时,调用
postcircumfix:<[ ]>
的原始版本与给定的参数。
关于object - 实现 AT-POS 以返回对象而不是事物列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60043334/
我是一名优秀的程序员,十分优秀!