php的协程和ruby的函数比较_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > php的协程和ruby的函数比较

php的协程和ruby的函数比较

 2018/7/11 17:20:51  xieye  程序员俱乐部  我要评论(0)
  • 摘要:纯粹是为了满足好奇心,也确实挺有意思。本文主要比较了两种语言的功能特点。yield这个关键词,在两种语言都有。先上ruby代码#ruby带块的函数使用示例defmyloop(a,b)whiletrueprint"intoCoroutine(进入协程)\n"yielda,bendendnum=1myloop(2,3)do|aa,bb|puts"numis#{num}"num=2*num+aa+bbbreakifnum>100end再上php代码<?php//php协程使用示例
  • 标签:PHP 函数 Ruby
纯粹是为了满足好奇心,也确实挺有意思。

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

先上ruby代码
class="ruby" name="code">
# 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



再上php代码

<?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 ;
    }
});


最终的结果都是
引用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
上一篇: php的协程和ruby的函数比较 下一篇: 没有下一篇了!
发表评论
用户名: 匿名