- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
docs for Slip提到“Slip 是一个列表,它会自动展平为外部列表(或其他类似列表的容器或可迭代对象)”。基于这个定义,这是完全合理的:
dd my @a = 1, |(2, 3); # OUTPUT: «Array @a = [1, 2, 3]»
但是,我对以下内容感到惊讶:
dd my @b = do {@a[2] := |(3, 4); @a} # OUTPUT: «Array @b = [1, 2, slip(3, 4)]»
我本来以为
slip(3, 4)
扁平化为@b,而不是保持
slip
. (也就是说,很惊讶
@a[2] := |(3, 4)
没有与
@a.splice(2, 1, [3, 4])
相同的语义。)
最佳答案
Slip 是一个列表 值 那个可以 展平成一个外部序列。
所以下面产生了一个扁平化的列表。
1, |(2, 3)
这是因为逗号
,
.
@a[0] = 1, |(2, 3); # [(1,2,3),]
如果你插入一个 Slip 也会发生同样的事情,因为 Slip 只是 List 的一个子类。
@a[0] = |(2, 3); # [slip(2,3),]
事实上,Slip 几乎完全只是一个列表。这是来自 Rakudo 的 Slip 代码。
# A Slip is a kind of List that is immediately incorporated into an iteration
# or another List. Other than that, it's a totally normal List.
my class Slip { # is List
# XXX this makes an empty Slip undefined?
multi method defined (Slip:D: --> Bool:D) { self.Bool }
multi method Slip(Slip:D:) { self }
method CALL-ME (+args) { args.Slip }
multi method raku(Slip:D: --> Str:D) {
nqp::if(
nqp::eqaddr(self,Empty),
'Empty',
nqp::stmts(
(my str $guts = callsame),
nqp::if(
nqp::eqat($guts,'$',0), # we're itemized
nqp::concat('$(slip',nqp::concat(nqp::substr($guts,1),')')),
nqp::concat('slip',$guts)
)
)
)
}
multi method List(Slip:D: --> List:D) {
my $list := nqp::create(List);
nqp::bindattr($list,List,'$!todo',nqp::getattr(self,List,'$!todo'))
if nqp::isconcrete(nqp::getattr(self,List,'$!todo'));
nqp::bindattr($list,List,'$!reified',nqp::getattr(self,List,'$!reified'))
if nqp::isconcrete(nqp::getattr(self,List,'$!reified'));
$list
}
}
这只会使 4 个功能起作用。
|().defined
这是定义的吗?Empty
肯定是未定义的,但 |(,)
或 slip()
可能应该被定义。这个方法只是说两者都是未定义的。) Slip((1,2))
将现有列表强制转换为 Slip。 Empty.raku
/|(,).raku
打印值以便它可能被评估。Empty
是一个空 Slip 的特定实例,它在运行时有一些特殊的处理。 |().List
获取列表而不是单据。List
或
Range
)作为索引,您可以将其展平。
@a[2, ] = |(3,4); # [Any, Any, 3]
@a[2, 3] = |(3,4); # [Any, Any, 3, 4]
@a[2..3] = |(3,4); # [Any, Any, 3, 4]
通过使用列表索引,您告诉 Raku
@a[…]
的结果。操作是一个列表,而不是单个值。
my $l-value := @a[2]; # contains the actual Scalar object in the array
my $r-value := |(3,4);
$l-value = $r-value;
这与您的代码所做的基本相同
@a[2] = |(3,4);
@a[2] =
是两个独立的操作。索引,然后分配
@a[2]
返回标量容器,然后是
=
将右侧的值分配到该单个容器中。
@a[2]
必须返回一个知道如何将 Slip 展平为数组的代理。
splice
因为它有对数组的引用。
my @a = 1, |(2, 3);
@a.splice: 2, 1, |(3,4);
同样,由于 Slip,这并不特别。
关于arrays - 什么算作 Slip 的 "outer list"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67855287/
最近,我一直在努力让我的 gui 看起来不错,其中一部分是实现我自己的标题栏、最大化按钮、最小化按钮等。 我在拖动时遇到问题,我希望能够通过单击 JFrame 中的任意位置来拖动 JFrame。 我尝
当通过 SLIP ping 一个 uip 设备时,我在 uart 中得到一个数据包,看起来像这样: uip_buf[0] 0x45 uip_buf[1] 0x0 uip
来自 https://snyk.io/research/zip-slip-vulnerability The contents of this zip file have to be hand cra
Zip4J 被列为易受攻击的 Zip Slip .他们声称 Zip4J 1.3.3 有修复。然而,我们从他们的网站下载的 JAR site是空的,没有类。 有人设法获得 1.3.3 版本吗?支持加密
我有一个 SKSpriteNode(Bird)和一个 SKPhysicsBody(Circle)。鸟节点受重力影响下落,直到到达100px的y位置。 override func didSimulate
docs for Slip提到“Slip 是一个列表,它会自动展平为外部列表(或其他类似列表的容器或可迭代对象)”。基于这个定义,这是完全合理的: dd my @a = 1, |(2, 3); # O
我正在尝试使用 Instruments 来找出为什么在显示某个 View Controller 时会出现明显的滞后。 当我运行分析器时,只关注 View Controller 初始化和显示在屏幕上的时
我有一个简单的标记,包含导航 div、内容 div 和页脚 div。如果我打开我的“页面”,一切似乎都很好。但是,如果我打开页面,然后将浏览器窗口的大小调整为例如30%,然后 content div
最近我注意到我的一些代码在 chrome 或 firefox 等浏览器中运行良好,使得 Internet Explorer 做了一些奇怪的事情。其中之一是: 我有一个包含三个输入字段的页面。输入显示正
我正在设置 Magento 安装(使用 bitnami magento image 1.7.0),但无法使用 PayPal 付款。我已经设置了所有内容,如 this video 所示。 ,但在尝试完成
例如,在C11中,可以合法地写:。你会得到1020美元。但它不会让你写下:。GCC返回。有时在表达式之外使用_STATIC_ASSERT会很不方便,因为您不太可能使用基于预处理器宏的伪函数来验证它们的
我是 C 语言新手,我的学位需要完成一门 C 编程类(class)。希望标题有意义……我很难表达我的意思。我会在这里详细说明。 我现在面临的问题是双类型数据在应该被拒绝的情况下却能够在未被检测到的情况
我是一名优秀的程序员,十分优秀!