首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将.lines序列赋值给变量并对其进行迭代?

如何将.lines序列赋值给变量并对其进行迭代?
EN

Stack Overflow用户
提问于 2018-09-28 23:33:52
回答 1查看 128关注 0票数 10

将迭代器赋给变量显然会改变Seq的行为方式。例如。

代码语言:javascript
复制
use v6;

my $i = '/etc/lsb-release'.IO.lines;
say $i.WHAT;
say '/etc/lsb-release'.IO.lines.WHAT;
.say for $i;
.say for '/etc/lsb-release'.IO.lines;

结果如下:

代码语言:javascript
复制
(Seq)
(Seq)
(DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS")
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"

所以一旦赋值,我只能得到序列的字符串表示。我知道我可以使用.say for $i.lines获得相同的输出,但是我不明白分配的迭代器和未分配的迭代器/Seq之间的区别。

EN

回答 1

Stack Overflow用户

发布于 2018-09-29 00:02:24

如果您希望能够迭代序列,则需要将其分配给一个位置:

my @i = '/etc/lsb-release'.IO.lines; .say for @i;

或者,您可以告诉迭代器,您希望将给定的对象视为可迭代的:

.say for @$i

或者,您可以将其放入迭代器的列表中:

.say for |$i

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52558578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档