Perl 6 中的主题变量 $_

Posted YoungForPerl6

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perl 6 中的主题变量 $_相关的知识,希望对你有一定的参考价值。

Perl 6 中的主题变量 $_

新的一年, 学习一下 Rakudo Perl 6.

今天是 2019 年差四天, 我们说一说 Perl 6 中的主题变量, 或者说是默认变量,即 $_, 今天的 topic。

在其它语言中, 默认变量可能是一个下划线(underline), 例如 Scala 中就用 _ 来代表一个默认变量。
而在 Perl 6 中, 默认变量可以让我们的生活更美好。虽然 $_ 是主题变量, 但是我们在很多情况下都可以省略它!

for

我们从最简单的 say 函数开始吧。

.say for ^2020;

在这里 .say 就是 $_.say 的简写, 因为 for 循环在这里没有使用循环变量,
默认就把序列中的每个值赋给 $_ 这个默认的循环变量。

given

.say given 'Wish list';

when

$_ = 42;

when 42 { say 'find it' };

for .. when

for 42, 43, "foo", 44, "bar" {

   when Int       { .say }

   when /:i ^Bar/ { .say }

   default        { say "Not an Int or a Bar" }

}

for .. given

for Date.new('2019-01-01') .. Date.new('2019-02-04') {

   printf("%04d%02d%02d\n", .year, .month, .day) given .DateTime

}

Block

my @results = lazy '/usr/share/dict/SOWPODS'.IO.lines.grep: {

   .chars 72 &&

   .substr(0, 1) 'a' .. 'z' &&

   .comb.Bag 'A' .. 'Z'

}

»

my @year = <2019 2018 2012 2020>;

@year».chars;

my @lines = gather "/usr/share/dict/words".IO.lines».chars».take;

gather take for

gather .take for <Nim Rust Perl>;

gather take 2 * $_ if $_ ** 2 > 19 for ^100;

列表解析

gather .take when /7$/ for 1..99;

gather take $_ ** 2 for 1..10;

with

.say with 42


再见!

以上是关于Perl 6 中的主题变量 $_的主要内容,如果未能解决你的问题,请参考以下文章

主题不适用于片段

如何有条件地将 C 代码片段编译到我的 Perl 模块?

perl中的队列

[ Perl 6 ] 定义类型的子集

Perl_实用报表提取语言

Perl 变量:标量变量