来自Perl 6 Wikipedia条目的更多信息
结
Perl 6引入了结点的概念:值是其他值的组合.[24] 在Perl 6设计的早期阶段,这些被称为"叠加",类似于量子叠加的量子物理学中的概念 - 波形可以同时占据几个状态直到观察"折叠"它们.Damian Conway在2000年发布的一个名为Quantum :: Superpositions [25]的Perl 5模块提供了一个初步的概念证明.虽然起初,这种叠加的价值观似乎只是一种程序化的好奇心,随着时间的推移,它们的实用性和直观性得到了广泛的认可,而现在,路口在Perl 6的设计中占据了中心位置.
在最简单的形式中,通过将一组值与junctive运算符组合来创建联结:
my $any_even_digit = 0|2|4|6|8; # any(0, 2, 4, 6, 8) my $all_odd_digits = 1&3&5&7&9; # all(1, 3, 5, 7, 9)
| 表示一个等于其左侧或右侧参数的值.&表示一个等于左右参数的值.这些值可以在任何使用正常值的代码中使用.在交叉点上执行的操作同等地作用于交叉点的所有成员,并根据junctive运算符进行组合.所以,("苹果"|"香蕉")〜"s"会产生"苹果"|"香蕉".在比较中,交汇点返回单个true或false结果进行比较.如果对于结点的任何一个元素的比较为真,则"任何"结点返回true.如果对于结的所有元素的比较为真,则"all"结点返回true.
连接也可用于通过引入一种受限于类型连接的通用编程风格来更丰富地扩充类型系统:
sub get_tint ( RGB_Color|CMYK_Color $color, num $opacity) { ... } sub store_record (Record&Storable $rec) { ... }
Brad Gilbert.. 11
一个月内有多少天?
given( $month ){ when any(qw'1 3 5 7 8 10 12') { $day = 31 } when any(qw'4 6 9 11') { $day = 30 } when 2 { $day = 29 } }
brian d foy.. 6
结点最吸引人的特点是您不需要为复杂情况编写大量代码测试.您描述了连接点的情况,然后应用测试.你没有考虑如何得到答案(例如,使用短路操作员或块),但你问的是什么问题.
一个月内有多少天?
given( $month ){ when any(qw'1 3 5 7 8 10 12') { $day = 31 } when any(qw'4 6 9 11') { $day = 30 } when 2 { $day = 29 } }
结点最吸引人的特点是您不需要为复杂情况编写大量代码测试.您描述了连接点的情况,然后应用测试.你没有考虑如何得到答案(例如,使用短路操作员或块),但你问的是什么问题.
自动阅读听起来很酷,虽然我不知道它的当前状态.
for all(@files) -> $file { do_something($file); }
连接没有顺序,因此VM可以自由地为每个元素生成一个线程@files
并并行处理它们.