gpt4 book ai didi

while 循环中的 bool (标量)上下文中的 Perl 列表

转载 作者:行者123 更新时间:2023-12-05 01:53:52 28 4
gpt4 key购买 nike

我盯着 perl LWP::Protocol.pm 中的这段代码,我不明白循环将如何退出:

 while ($content = &$collector, length $$content) {
$content_size += length($$content);
# more here
}

在我的解释中,我认为这是标量上下文中包含 2 个元素的列表,因此 while 循环测试的结果是列表的长度,它始终为 2 并且永远不会为 false。这究竟是如何运作的?

最佳答案

请看operator precedence在文档中。您会看到 = 的优先级高于 ,。这意味着它首先执行 $content = &$collector,因为 =, 相比具有更高的优先级。然后它执行 length $$content

继续阅读有关 Comma Operator 的文档人们会发现:

Binary "," is the comma operator. In scalar context it evaluates its left argument, throws that value away, then evaluates its right argument and returns that value.

因此,在这种情况下,结果将是正确的,即 length $$content。这将用作 while 中的条件。

关于while 循环中的 bool (标量)上下文中的 Perl 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70982033/

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