1 把代码像对象一样存储
当你想要以对象的形式存储一块代码的时候,ruby给了你几种方法。下面我们会介绍Proc 对象, Method 对象和 UnboundMethod 对象.
内置的Proc 类包装ruby block到一个对象.Proc对象,像一个blocks,是一个闭包而且保存了它定义 时的上下文:
Ruby代码
myproc = Proc.new { |a| puts "Param is #{a}" } myproc.call(99) # Param is 99
当一个方法接受一个&的参数,然后这个方法紧跟着一个block被调用的时候,Proc 对象就会自动 被创建:
Ruby代码
def take_block(x, &block) puts block.class x.times {|i| block[i, i*i] } end take_block(3) { |n,s| puts "#{n} squared is #{s}" }
这里要注意的是[]方法是call方法的别名。
如果你有一个Proc的对象,你可以把它传递给可以接收block的方法。只要在它前面加上&就行 了.
Ruby代码
myproc = proc { |n| print n, "... " } (1..3).each(&myproc) # 1... 2... 3...
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索对象
, 方法
, 代码
, block
, proc
一个
oop三大特性、oop特性、oop的三大特性、oop的特性、the ruby way 3rd pdf,以便于您获取更多的相关知识。
时间: 2024-11-18 01:55:29