gpt4 book ai didi

perl - 标量与列表上下文

转载 作者:行者123 更新时间:2023-12-03 23:34:14 24 4
gpt4 key购买 nike

不知道下面两种示例在两种情况下do {}返回列表时给出不同结果的背后的原理是什么。

perl -wE 'say my $r = do {  (44); }'
44

perl -wE 'say my $r = do { my ($x) = map $_, 44; }'
1

最佳答案

在这两种情况下,给$ r的赋值都强制do上的标量上下文。但是,在第一种情况下,列表上的标量上下文会返回列表的最后一个值'44'。

在第二种情况下,对my ($x)的赋值会强制使用列表上下文。在标量上下文中赋给列表的结果是赋值右侧的元素数量。这样你就知道了。
map $_, 44返回长度为1的列表,其中包含(44)
my ($x) =将上面列表中的结果分配给列表$x,因为($x)放在方括号中,使得$ x = 44

由于对do进行了赋值,因此$r块处于标量上下文中,请注意缺少括号,并且正如我在上面所说的,这返回了列表赋值右侧的长度。在这种情况下为1。

查看执行以下操作会发生什么:

perl -wE 'say my $r = () = (1,3,5,7)'

关于perl - 标量与列表上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54180973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com