下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922
论坛 >编程语言 >从实战项目总结的Ruby小技巧之代码块

从实战项目总结的Ruby小技巧之代码块

634348197137发布于 2017-07-27 10:07查看:724回复:1

     代码块(Blocks)

        代码块是Ruby非常重要的一部分,你随处都见到它们被广泛使用。如果你没有使用,那么你将发现许多人使用方法关联代码块,甚至仅仅是让代码结构变得清晰而已。

        代码块有三种主要的作用:循环(looping),初始化和销毁(setup and teardown),以及回调和延迟执行(callbacks or deferred action)。

        下面这个例子演示了如何使用代码块循环输出菲波那切数列。它使用block_given?方法判断是否关联了一个代码块,否则将从当前方法返回一个枚举器。

        yield关键字用来在方法中执行一个代码块,它的参数将传递给代码块。当代码块执行完毕,将返回调用方法,并执行下一行代码。方法返回值为在最大数(max)之前的最后一个菲波那切数。

1501121142476420.jpg

        下一个例子将把设置、销毁以及错误处理等操作代码放到方法中,将方法的主要逻辑放到代码块中。通过这种方式,样板代码就不需要在多个地方重复,另外当你需要改变错误处理代码时,只需要做少量的修改。

        yield语句的返回结果,即代码块的返回值,将保存到一个局部变量中。这样,可以将代码块的执行结果作为方法的返回值。

1501121179754531.jpg

        下一个例子不会使用yield关键字。这里有另外一种使用代码块的方法:将‘&’作为方法最后一个参数的前缀,将把关联代码块作为一个Proc对象保存到此参数当中。Proc对象拥有一个call实例方法,可以用来执行代码块,传递给call方法的参数将作为代码块的参数。在这个例子中,你可以保存代码块最为一个回调稍后执行,或者在你需要的时候执行延迟的操作。

1501121204712723.jpg


收藏(0)0
查看评分情况

全部评分

此主贴暂时没有点赞评分

总计:0

回复分享

版主推荐

    共有1条评论

    • IT宅男
    • mr jack
    • Mr ken
    • Mright
    • cappuccino
    • YUI
    • 课课家运营团队
    • 课课家技术团队1
    • 酸酸~甜甜
    • 选择版块:

    • 标题:

    • 内容

    • 验证码:

    • 标题:

    • 内容

    • 选择版块:

    移动帖子x

    移动到: