`
xieye
  • 浏览: 803589 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

php的协程和ruby的函数比较

    博客分类:
  • PHP
阅读更多
纯粹是为了满足好奇心,也确实挺有意思。

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

先上ruby代码
# 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
0
0
分享到:
评论

相关推荐

    ruby实用函数和实例

    本人正在写一个ruby程序,在网上找到有用的实例和函数说明,和大家一起分享。

    rubyPHP高性能的PHP框架

    rubyPHP的高性能体现在以下几个方面: ...rubyPHP重写了mysql_query,mongo_query函数,除了对查询语句进行内存级缓存的优化,同时也将查询语句放到了从服务器上执行。mysql的主从配置文件路径为config/mysql.php。

    Ruby.js:Ruby 函数

    扩展 Ruby 函数。 文档 如何使用 标准通话 Ruby . uniq ( [ 1 , 1 ] ) - &gt; [ 1 ] Ruby . ord ( "ab" ) - &gt; 97 直接呼叫 Ruby [ 2 ] . Array . prototype . uniq . call ( [ 1 , 1 ] ) - &gt; [ 1 ] Ruby [ 2 ] . ...

    C 协程库orchid.zip

    协程已经被证明是一种非常有用的程序组件,不仅被python、lua、ruby等脚本语言广泛采用,而且被新一代面向多核的编程语言如golang rust-lang等采用作为并发的基本单位。 协程可以被认为是一种用户空间线程,与传统...

    使用Python Lua和Ruby语言进行游戏编程

    使用Python Lua和Ruby语言进行游戏编程

    Ruby-PyCall从Ruby语言调用Python函数

    PyCall: 从Ruby语言调用Python函数

    ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码

    ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码

    Ruby-rubybuild编译和安装Ruby

    ruby-build - 编译和安装Ruby

    Ruby完全自学手册 下

    《Ruby完全自学手册》是一本完全覆盖Ruby和Ruby on Rails的完全自学手册。《Ruby完全自学手册》的特色是由浅入深、循序渐进,注重理论和实践的结合。虽然定位为入门手册,但是依然涉及许多高级技术和应用,覆盖到的...

    ruby的二进制字符串与hex互转,二进制字符串与整数互转的工具函数

    本资源是ruby代码,提供了一系列封装好的函数,用于快速进行转换,一个函数搞定,包括如下转换,二进制字符串与hex字符串的互转。二进制字符串与整数互转,包括uint8,uin16,uint32, 以及本地字节序和网络字节序两种...

    Ruby中的方法(函数)学习总结

    1、Ruby中方法名和变量名的命名规则一样(以小写字母开头,单词之间的分隔使用“_”,),不过可以在方法名后边带上!(重磅方法)或者?(布尔类型返回值)。 2、方法的参数请使用(),参数都是局部变量,可以为...

    ruby DBI ruby DBI ruby DBI

    ruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ...

    Ruby教程.chm和Ruby程序设计.doc

    Ruby教程.chm和Ruby程序设计.doc,学习ruby快速入门。

    Ruby-RESTClient简单的HTTP和Ruby的REST客户端

    RESTClient - 简单的HTTP和Ruby的REST客户端

    functions-framework-ruby:FaaS(函数即服务)框架,用于编写可移植的Ruby函数

    一个开放源代码框架,用于编写在无服务器环境中运行的轻型可移植Ruby函数。 写入此框架的功能将在许多不同的环境中运行,包括: (公开预览) 任何其他基于的环境 您当地的开发机器 该框架使您可以: ...

    Ruby程序设计语言 (涵盖Ruby 1.8和1.9)源代码

    《Ruby程序设计语言》是Ruby的权威指南,全面涵盖该语言的1.8版和1.9版。本书详尽但并不拘泥于语言规范,既适合首次接触Ruby的资深程序员,同样也适合那些想要挑战对这门语言的理解并更深入掌握它的Ruby程序员。本书...

    Ruby里4种比较函数(equal?, eql?, ==, ===)详解

    本文给大家详细介绍了Ruby中的4种比较函数(equal?, eql?, ==, ===)的用法,并用具体示例进行了讲解,希望对大家学习ruby能够有所帮助。

    ruby2ruby.zip

    ruby2ruby 提供一些用来根据 RubyParser 兼容的 Sexps 轻松生成纯 Ruby 代码的方法。可在 Ruby 中轻松实现动态语言处理。 标签:ruby2ruby

    ruby源代码 ruby源代码 ruby源代码 ruby源代码2

    ruby源代码 ruby源代码 ruby源代码 ruby源代码2

    Ruby常见面试题.pdf

    请简要介绍在Ruby中的函数定义和调用方式。 7. Ruby中如何处理异常(Exception Handling)?请说明在Ruby中的异常处理机制。 8. Ruby中的数组(Array)和哈希(Hash)有什么区别?请说明在Ruby中数组和哈希的不同...

Global site tag (gtag.js) - Google Analytics