`
xieye
  • 浏览: 831600 次
  • 性别: 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中,有许多实用的内置函数和方法,这些工具极大地提升了开发者的效率。在这个主题下,我们将深入探讨Ruby的一些关键函数和实例,以及如何在实际编程中应用它们。 首先,我们关注的是"使用Ruby语言实现自动...

    Ruby基础语法+Ruby变量与数据类型+Ruby控制结构+Ruby函数与方法+Ruby面向对象编程等全套教程

    Ruby函数与方法 Ruby面向对象编程 Ruby模块与包 Ruby错误处理 Ruby文件与I/O操作 Ruby正则表达式 Ruby网络编程 Ruby数据库交互 Ruby测试框架 RubyWeb框架Rails入门 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 ] . ...

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

    Ruby-PyCall是一个非常有用的库,它允许Ruby程序员无缝地调用Python的函数和模块,极大地扩展了Ruby的生态系统。这个库使得两个语言之间的交互变得简单而高效,特别是在需要利用Python的强大科学计算或数据处理能力...

    Ruby-Async是基于nio4r和定时器的Ruby的可组合的异步IO框架

    总结来说,Ruby-Async是一个强大的工具,它结合了nio4r的高效I/O管理和Ruby的协程机制,为开发者提供了优雅的异步编程解决方案。通过理解其核心概念和使用方式,你可以构建出高度并发、低延迟的应用程序,尤其适合于...

    C 协程库orchid.zip

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

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

    Ruby教程.chm可能涵盖了Ruby的基础语法、变量、数据类型、控制结构(如条件语句和循环)、函数、类与对象、模块、继承、异常处理等重要内容。此外,它可能还会讲解Ruby中的块、 Proc 和 Lambda,以及Ruby的元编程...

    透视Ruby 1.9的Lambda函数

    《Ruby 1.9中的Lambda函数详解》 Ruby语言的一大魅力在于其Block功能,它使得编写简洁、可复用的算法变得轻而易举,甚至让人们对循环的畏惧感大大降低。Block在其他编程语言中被称为Lambda函数或匿名函数,有时也被...

    Ruby-rubybuild编译和安装Ruby

    Ruby是一种动态、开源的编程语言,以其简洁、优雅的语法和强大的元编程能力著称。在Ruby开发中,为了管理不同版本的Ruby环境,我们常常会使用到`rbenv`和`ruby-build`这两个工具。本文将详细介绍如何使用`ruby-build...

    PHP、Python、Ruby的(数据库、文件)比较(原创)

    在数据库比较中,Python和Ruby的ORM能力让数据库操作更加抽象化,减少了直接SQL的编写,而PHP虽然可以通过PDO或MySQLi进行数据库操作,但在面向对象方面不如Python和Ruby直观。然而,PHP在Web开发中的普及度使其在...

    Ruby新手学习书(Ruby语言中文教程)和Rails_4_days

    3. **函数与方法**:了解如何定义和调用函数,以及Ruby中的块、 Proc 和 Lambda 的使用。 4. **面向对象编程**:Ruby是一种纯面向对象的语言,你将学习类、对象、继承、模块、封装和多态等核心概念。 5. **异常...

    用Python,Lua和Ruby语言设计游戏

    在游戏开发领域,Python、Lua和Ruby这三种编程语言都有其独特的优势和应用。这篇书籍《用Python, Lua和Ruby语言设计游戏》旨在为初学者提供一个了解和使用这些语言进行游戏开发的入门指南。以下是关于这三个语言在...

    函数式-确定性-Ruby取笑___下载.zip

    10. **Proc和Lambda**:两者都是Ruby中的匿名函数,Proc更灵活,而Lambda更接近于函数的行为,如检查参数数量和强制返回。 通过这些函数式编程技术,Ruby程序员可以编写出更加简洁、可读性强的代码,同时减少错误的...

    Ruby-Functo是ruby中的可组合方法对象

    总之,Ruby-Functo是Ruby开发中的一个重要工具,尤其对于那些喜欢函数式编程风格的开发者来说,它提供了一套强大的工具集,用于构建可组合、可重用的方法对象,提升了代码的可读性和维护性。通过熟练掌握Functo,...

    Python和Ruby比较优缺点共1页.pdf.zip

    这份压缩包文件“Python和Ruby比较优缺点共1页.pdf.zip”可能包含了一个对比这两种语言特性和优缺点的单页PDF文档。虽然具体内容无法直接提供,但我们可以根据已知信息来深入探讨Python和Ruby的基本特性以及它们在...

    Ruby Ruby Ruby Ruby Ruby Ruby

    Ruby Ruby Ruby Ruby Ruby Ruby

    笨办法学ruby_笨办法学ruby_ruby_bravevk4_

    Ruby的块(blocks)和 Proc 对象是其独特之处,它们提供了简洁的回调函数和迭代器。书中会深入解释这些概念,并通过实例展示它们在实际编程中的应用。Ruby还支持闭包,这是一种强大的工具,可以捕获和存储当前环境的...

Global site tag (gtag.js) - Google Analytics