php的协程和ruby的函数比较

纯粹是为了满足好奇心,也确实挺有意思。

本文主要比较了两种语言的功能特点。yield这个关键词,在两种语言都有。

[size=x-large]先上ruby代码[/size]

# ruby带块的函数使用示例
def myloop(a, b)
while true
print "into Coroutine(进入协程)\n"
yield a, b
end
end

num = 1
myloop(2, 3) do |aa,bb|
puts "num is #{num}"
num = 2 * num + aa + bb
break if num > 100
end


[size=x-large]
再上php代码[/size]

<?php
// php协程使用示例。
function myloop($a, $b, $call_fun)
{
$fun = $call_fun($a, $b);
echo "into Coroutine(进入协程)\n"; // 这里多一行。php的协程特点
while (true) {
if ( $fun->valid() ) {
echo "into Coroutine(进入协程)\n";
$fun->current() ;
}else {
break;
}
$fun->next();
}
};

$num = 1;
myloop(2, 3, function ($a, $b) use ($num) {
// 这是一个匿名的协程函数
while (true) {
echo "num is {$num}\n";
$num = 2 * $num + $a +$b ;
if ($num > 100) break;
yield ;
}
});


[size=x-large]最终的结果都是[/size]
[quote]into Coroutine(进入协程)
num is 1
into Coroutine(进入协程)
num is 7
into Coroutine(进入协程)
num is 19
into Coroutine(进入协程)
num is 43
into Coroutine(进入协程)
num is 91
[/quote]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值