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 ...
随机推荐
- 选择时区的命令tzselect
选择时区的命令tzselect tzselectPlease identify a location so that time zone rules can be set correctly.Plea ...
- php 扩展dll
一.准备工作: 注:php5.2没有vc9,php5.3.php5.4没有vc6.呵呵.PHP5.5开始,不支持xp和win2003了,更是vc11了.--------------->所以,扩展 ...
- mvc理念和thinkphp的语法特征 thinkphp引入模板
mvc即模型(model)-视图(view)-控制器(controller)的缩写 控制器很重要,功能性的东西要靠它实现,模型我还没接触到,只知道它对数据库负责,类似一个大控件吧... 速度... 一 ...
- linux shell 输入密码不显示
1 read -s -p "YOUR PassWord:" pa echo "${pa}" 2 [liujianzuo@ow2 mysql_scri]$ cat ...
- 关于mysql的错误 - no query specified
Mysql----error:no query specified mysql下抛出错误:error:no query specified出现此错误是sql不合法原因:如:select * from ...
- xp系统的安装SVN
xp系统安装SVN,出现错误: 解决办法: 1,首先确定xp体统是否为sp3,SVN安装需要在sp3以上: 2,检查windows Installer是否开启,解决:控制面板-管理工具-服务—wind ...
- 第七篇 SQL Server代理作业活动监视器
本篇文章是SQL Server代理系列的第七篇,详细内容请参考原文 在这一系列的上一篇,你创建并配置SQL Server代理作业.每个作业有一个或多个步骤,可能包含大量的工作流.在这篇文章中,将查看作 ...
- jquery .on的使用
1.7版本以上,开始使用.on绑定时间 给jquery动态产生的元素绑定事件不能使用普通的$("#fff").click(function(){alert("ok&quo ...
- Visual Studio 中 UNICODE 宏的设置
项目属性-> 配置属性 -> 常规 -> 字符集 (多字节字符集即没有设置UNICODE宏, 使用Unicode字符集就是设置了UNICODE宏) 设置的效果可以去 C/C++ -& ...
- memwatch内存泄露检测工具
工具介绍 官网 http://www.linkdata.se/sourcecode/memwatch/ 其功能如下官网介绍,挑选重点整理: 1. 号称功能: 内存泄露检测 (检测未释放内存, 即 动态 ...