• [2014年学习计划之RoR系列] 第二步 – 熟悉Ruby语言 (2/n) Blocks and Iterators (代码块和迭代器)


    [就算没有含金量,也请尊重原创, 转载自我的独立博客http://brucejia.net]

    Blocks and Iterators (代码块和迭代器)

    代码块和迭代器是Ruby语言中比较有特点的东西。先看代码块吧,如下面代码所示,代码块通常是由大括号({和}) 或者do/end包起来的一段代码。

       1: { puts "Hello" } # this is a block
       2: do ###
       3:     club.enroll(person) # and so is this
       4:     person.socialize #
       5: end ###

    建议:单行的block用大括号;多行的block用do/end

    blocks可以用来实现回调函数和迭代器。

       1: def call_block
       2:     puts "Start of method"
       3:     yield
       4:     yield
       5:     puts "End of method"
       6: end
       7:  
       8: call_block { puts "In the block" }

    注意代码中的yield关键字。上边的代码产生结果如下:

    Start of method
    In the block
    In the block
    End of method

    yield会调用跟方法(method)相关联的block,可以调用一次或多次。

    当然block也可以带有自己的参数

       1: call_block {|str, num| ... }

    调用的时候将参数传入给yield就好了。 - 这个时候yield看起来像个函数了。

       1: def call_block
       2:     yield("hello", 99)
       3: end

    动手试试看这两行代码会输出什么。

       1: animals = %w( ant bee cat dog elk ) # create an array
       2: animals.each {|animal| puts animal } # iterate over the contents
  • 相关阅读:
    任意用户密码重置的10种姿势
    提取header头进行模块化处理
    web安全测试--XSS(跨站脚本)与CSRF
    web测试--登录界面怎么测?
    Burp Suite抓https数据包
    CTFHub_技能树_远程代码执行
    CTFHub_技能树_SQL注入Ⅱ
    XSS 跨站脚本
    C语言中的内存对齐问题
    CTFHub_技能树_SQL注入Ⅰ
  • 原文地址:https://www.cnblogs.com/brucejia/p/ruby-blocks-iterators.html
Copyright © 2020-2023  润新知