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的更多相关文章

  1. Node.js学习笔记 02 Implementing flow control

    What is flow control? 和其它语言一样,Node.js 在代码编写时,如何组织代码,如何写出clean code都是不可避免的难点. 同时,由于Node.js的天然特性(异步,事件 ...

  2. 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 ...

  3. Go Flow Control

    [Go Flow Control] 1.for没有(),必须有{}. 2.for的前后表达式可以为空. 3.没有while,for即是while. 4.无穷循环. 5.if没有(),必须有{}. 6. ...

  4. Producer Flow Control 和 vmQueueCursor

    ActiveMQ可以开启或关闭生产者流量控制Producer Flow Control ,基本原理是producer 发送一条消息会收到broker返回的ack响应,当磁盘或内存快满的时候broker ...

  5. Educational Codeforces Round 45 (Rated for Div. 2) F - Flow Control

    F - Flow Control 给你一个有向图,要求你给每条边设置流量,使得所有点的流量符合题目给出的要求. 思路:只有在所有点的流量和为0时有解,因为增加一条边的值不会改变所有点的总流量和, 所以 ...

  6. TCP Flow Control and Data Transfer

    TCP Flow Control TCP Data Transfer Selective Repeat ARQ with Positive ACK Window slides a byte basis ...

  7. 第三章: Expressions and Flow Control

    第三章: Expressions and Flow Control一:局部变量和实例变量定义变量是指设定变量的数据类型和变量的名字,Java语言要求变量遵循先定义,再初始化,然后使用的规则.作用域:指 ...

  8. RabbitMQ学习之Flow Control

    当RabbitMQ发布消息速度快于消费速度或者系统资源不足时,RabbitMQ将降低或阻断发布消息速度,以免服务器资源饱满而宕机,可以通过rabbitmqctl和web管理页面查看连接的状态为flow ...

  9. SecureCRT VBscript关闭Flow Control CTS

    crt.Session.Connect "/Serial COM2 /BAUD 38400 /NOCTS" 更多命令行参数可查看SecureCRT-Help-Help Topics ...

随机推荐

  1. 30天,O2O速成攻略【8.30南京站】

    活动概况 时间:2015年8月30日13:30-16:30 地点:啡咖啡·孵化器(南京市玄武大道699-22号江苏软件园22栋) 主办:APICloud.Udesk.人为峰 网址:www.apiclo ...

  2. MySQL 事件跟踪器 , MySQL 无须重启服务 跟踪 SQL , 也无须配置日志

    第一步 创建以下两个 日志表 按 Ctrl+C 复制代码 按 Ctrl+C 复制代码 CREATE TABLE `general_log` ( `event_time` timestamp NOT N ...

  3. 史上最全的iOS面试题及答案

    迷途的羔羊--专为路痴量身打造的品牌.史上最精准的定位.想迷路都难!闪电更新中...敬请期待,欢迎提意见.下载地址:https://itunes.apple.com/us/app/mi-tu-de-g ...

  4. 第一篇 Integration Services:SSIS是什么

    本篇文章是Integration Services系列的第一篇,详细内容请参考原文. Integration Services是一种在SQL Server中最受欢迎的子系统.允许你在各种数据源之间提取 ...

  5. mini install centOS log

    no ifconfig yum install net-tools ------------------------------------------------------------------ ...

  6. ios app下载跳到itunes

    <body class="box"> <div class="text"> <a href="https://itune ...

  7. c# 工具

    虚拟机 http://sandcastle.codeplex.com/ 读取excel等的一个工具 http://npoi.codeplex.com/releases/view/115353 host ...

  8. java io读书笔记(6) Writing Arrays of Bytes

    显而易见,一次性写出一堆数据,要比一个byte一个byte的写,快多了,因此,outputstream,给出了2个增强型的write: public void write(byte[] data) t ...

  9. Struts2配置文件各种标签的含义

    最近正在学习Struts2,在配置文件中遇到好多标签,各种意义不同.为了方便学习,便把各种标签的书写和含义总结如下:(随时更新)   <struts>     <!-- 开启使用开发 ...

  10. Mac系统下控制鼠标移动

    CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState); CGEventRef m ...