Backup: Flow Control in Perl6
Control Flow
注意空格,注意空格,注意空格
和 Perl5不同的是,这些结构都可以返回值,而且即使倒置结构也可以用 block 了
block 可以有逗号
with without orwith
{...}; #后面可以加; 这样就成了statement,会被立即执行;默认是不会立即执行的
do {...}; #do可以让block立即执行,并和sub/method一样返回最后执行的语句
#do的block也只有需要返回值的时候才被执行
#do也可以在没有{}的情况用,只有是一个 expression 最后的部分
quietly {};
#warnings 不会烦人地显示的
once {};
#只运行一次,即使在 loop 中也一样一次
#------------
#循环
#------------
for @LIST -> $item {...}
# -> $item 可以省略,默认是用$_,而且同样可以省略
for @LIST.kv -> $idx, $val {...}
for %HASH.kv -> $key, $val {...}
for @LIST <-> $_ {...}
#这样$_就可读可写了,默认是只可读
#同样可以把 for loop 用()括起来得到返回值
my @a = (for 1,2,3 { $_ * 2 });
my @a = do for 1,2,3 { $_ * 2 };
#有爱的一点就是把 C 语言格式的 for loop 换成了
loop (my $i = 0; $i < 10; $i++) {...}
#同样可以把 loop loop 用()括起来得到返回值
while True/False {...}
until True/False {...}
{...} while True/False
{...} until True/False
#同样可以把 while/until loop 用()括起来得到返回值
# do {...} while True/False;不能用
#可以用
repeat {...} while True/False;
repeat {...} until True/False;
#和 Perl5 一样也有 next/last/redo
#------------
#条件
#------------
if True/False {...} #condition 部分也不必要()了
{...} if True/False # statement modifier form。Perl5中不能用 block
(if True/False {...})
({...} if True/False)
#要么返回 last evaluated,要么空 list
if True/False {...} else {...}
if True/False {...} elsif {...} else {...}
#else 任何时候都是可以没有的
#不能像 Python 中那样 {...} if True/False else {...}
#多可以用()括起来得到返回值
#有一点不可思议的是,
#else 可以获取上一个执行的 if/elsif 的值,格式是
if {} else -> $a {...}
#$a就是上次执行的 if block 的结果
unless True.False {...}
#不能有 else/elsif,可以用
{} unless True/False
given EXPR {
when EXPR { ... }
when EXPR { ... }
default { ... }
}
given EXPR {...}
{...}(EXPR)
#和 for 一样也是使用$_,同样可以没有when/default
#注意 when 的顺序
#用proceed 表示立即退出当前 when/default,继续后续的 when/default,但不会退出 given
#用succeed 表示立即退出 given 块
#同样可以把 given block 用()括起来得到返回值
#此外还有一些
with expression {...}
orwith expression {...}
without expression {...}
#和 if 一样,但会检查 expression 是否定义
#上面的分别和 if elsif unless 对应
gather { take ...; ...}
#有点多选项的意思,只要满足条件就返回,对返回个数没有限制
# generate values lazily
# scoped dynamically
#上面的这两个点 so lazy
#------------
#LABEL
#------------
#while/until/for loop 可以有 LABEL,可以和 redo/next/last 一起使用
#当然也可以 goto 啦
Backup: Flow Control in Perl6的更多相关文章
- Node.js学习笔记 02 Implementing flow control
What is flow control? 和其它语言一样,Node.js 在代码编写时,如何组织代码,如何写出clean code都是不可避免的难点. 同时,由于Node.js的天然特性(异步,事件 ...
- RocketMq发送消息出现com.alibaba.rocketmq.client.exception.MQBrokerException: CODE: 2 DESC: [TIMEOUT_CLEAN_QUEUE]broker busy, start flow control for a while, period in queue: 201ms, size of queue: 1
最近对系统进行压测,发现发送消息到消息队列的时候出现如下错误: com.alibaba.rocketmq.client.exception.MQBrokerException: CODE: 2 DE ...
- Go Flow Control
[Go Flow Control] 1.for没有(),必须有{}. 2.for的前后表达式可以为空. 3.没有while,for即是while. 4.无穷循环. 5.if没有(),必须有{}. 6. ...
- Producer Flow Control 和 vmQueueCursor
ActiveMQ可以开启或关闭生产者流量控制Producer Flow Control ,基本原理是producer 发送一条消息会收到broker返回的ack响应,当磁盘或内存快满的时候broker ...
- Educational Codeforces Round 45 (Rated for Div. 2) F - Flow Control
F - Flow Control 给你一个有向图,要求你给每条边设置流量,使得所有点的流量符合题目给出的要求. 思路:只有在所有点的流量和为0时有解,因为增加一条边的值不会改变所有点的总流量和, 所以 ...
- TCP Flow Control and Data Transfer
TCP Flow Control TCP Data Transfer Selective Repeat ARQ with Positive ACK Window slides a byte basis ...
- 第三章: Expressions and Flow Control
第三章: Expressions and Flow Control一:局部变量和实例变量定义变量是指设定变量的数据类型和变量的名字,Java语言要求变量遵循先定义,再初始化,然后使用的规则.作用域:指 ...
- RabbitMQ学习之Flow Control
当RabbitMQ发布消息速度快于消费速度或者系统资源不足时,RabbitMQ将降低或阻断发布消息速度,以免服务器资源饱满而宕机,可以通过rabbitmqctl和web管理页面查看连接的状态为flow ...
- SecureCRT VBscript关闭Flow Control CTS
crt.Session.Connect "/Serial COM2 /BAUD 38400 /NOCTS" 更多命令行参数可查看SecureCRT-Help-Help Topics ...
随机推荐
- 8、JavaScript深入浅出——数据类型
一.六种数据类型 Javascript是弱类型. 五种原始类型和一种对象类型: number String boolean null undefined Object 二.隐式转换 +与-的运算举例: ...
- tomcat 6.0.44 “has failed to stop it. This is very likely to create a memory leak” 问题调查
1. 问题起因 我们项目中缓存模块某个实现采用了ehcache(2.4.3),当项目部署到tomcat中后,对tomcat做停止服务操作(点击eclipse的console红色的停止按钮,奇怪的是有小 ...
- MVC 自定义过滤器/特性来实现登录授权及验证
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 最近在做自学MVC,遇到的问题很多,索性一点点总结 ...
- iOS6:在你的App内使用Passbook
前言 这是一篇翻译,感谢Jonathan Tang. 原文地址:iOS 6 Tutorial: Integrating Passbook into Your Applications 另外,看到另一篇 ...
- PHP——生成随机数和日期时间
在PHP里面两个常用的函数 rand(); 生成随机数 当括号内无参数时 系统会以当前时间为种子进行随机数的生成 rand(1,10); 括号里面是生成随机数的范围,在形成的随机数在1~1 ...
- HTML中调用servlet的问题(?)
最近在学习servlet.刚开始时,按照案例一行一行的敲代码.不过,出问题了. hello1.html <!DOCTYPE html> <html> <head> ...
- 双端队列(单调队列)poj2823 区间最小值(RMQ也可以)
Sliding Window Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 41844 Accepted: 12384 ...
- MAC开发NDK非常的简单
转自:http://www.cnblogs.com/jarrah/archive/2013/03/15/2961892.html 附带CDT的下载:http://www.eclipse.org/cdt ...
- phpredis 订阅者模式
[TOC] 一.场景介绍 最近的一个项目需要用到发布/订阅的信息系统,以做到最新实时消息的通知.经查找后发现了redis pub/sub(发布/订阅的信息系统)可以满足我的开发需求,而且学习成本和使用 ...
- spark streaming - kafka updateStateByKey 统计用户消费金额
场景 餐厅老板想要统计每个用户来他的店里总共消费了多少金额,我们可以使用updateStateByKey来实现 从kafka接收用户消费json数据,统计每分钟用户的消费情况,并且统计所有时间所有用户 ...