美文网首页
Ruby:块

Ruby:块

作者: Wougle | 来源:发表于2018-01-19 15:06 被阅读0次

首先来看一下块的语法

block_name{
   statement1
   statement2
   ..........
}

块的调用方法一般采用以下形式:

对象.方法名(参数列表)|块变量|
    块代码
end
#或者
对象.方法名(参数列表){|块变量|  
    块代码
}

再来看一下块的回调

1.yield

yield 主要用于隐式 block 回调,ruby 方法默认可以不声明 block,在其内部可通过 yield 回调。

def test
    yield("YJ") if block_given? # block_given?判断是否存在 block
end

test{|str| puts str}
2.Call

如果方法的最后一个参数前带有 &,那么可以向该方法传递一个块,且这个块可被赋给最后一个参数。如果 * 和 & 同时出现在参数列表中,& 应放在后面。block 的参数使用 call 回调。

def test(&block)
    block.call("YJ") if block
end

test{|str| puts str}
3.Proc

如果需要传入多个block,可以利用Proc将block转换为属性

def test(block1, block2)
    block1.call("W") if block1
    block2.call("G") if block1
end

block1 = Proc.new do |str|
    puts str
end

block2 = Proc.new{|str|
    puts str
}

test(block1, block2) # 传入 block 临时变量

相关文章

  • Ruby 块

  • Ruby:块

    首先来看一下块的语法 块的调用方法一般采用以下形式: 再来看一下块的回调 1.yield yield 主要用于隐式...

  • ruby 块

    ruby块: 块中的代码总是包含在大括号{}中 块总是从与其具有相同名称的函数调用,eg:如果你的块名为test,...

  • Ruby块与模块

    Ruby 块 Ruby 有一个块的概念。块由大量的代码组成。您需要给块取个名称。块中的代码总是包含在大括号 {} ...

  • ruby-块

  • Ruby代码块

    Ruby最强大的语言就是他的代码块 [root@master1 ruby]# cat test_block.rb

  • Ruby 块从入门到精通

    “块”是 Ruby 中最有用的特性之一,但是也常常被忽略。开始学习 Ruby 块时,经常被 yield 弄的难以理...

  • Ruby定义带块的方法

    Ruby定义带块的方法 Ruby中do ~end之间的部分称为块,也可以写为{..}。下面看一个简单例子,怎么自定...

  • Ruby 块漫谈 I

    Ruby的块block是ruby的一个重要特性,它能够允许用户将一系列的自定义操作(说白了就是一坨代码)像参数一样...

  • Ruby 块漫谈 II

    上一节我们讲到了Ruby块block的一些大致概念和定义方式,也说到了,块的使用在提升代码抽象和复用方面有很大的帮...

网友评论

      本文标题:Ruby:块

      本文链接:https://www.haomeiwen.com/subject/jzwooxtx.html