重写简单的ruby函数使用块

前端之家收集整理的这篇文章主要介绍了重写简单的ruby函数使用块前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我不知道正确的术语.我试图google它,找不到任何因为这个原因.

我正在编写一个Ruby库,我想重写这些函数,所以他们的工作方式如下,因为我喜欢它的可读性(在一个块内?)@H_404_3@

我有一个这样做的功能@H_404_3@

@dwg = Dwg.new("test.dwg")
@dwg.line([0,0],[1,1,0])
@dwg.save

我想重写它,所以它的工作原理@H_404_3@

Dwg.new("test.dwg") do

   line([0,0])
   save

end

你可以概述我的方式吗?@H_404_3@

解决方法

您可以定义Dwg的初始化器以获取一个块,然后使用instance_eval生成该块,如下所示:
class MyClass
  def initialize(name,&block)
    @name = name
    instance_eval &block
  end

  def show_name
    puts 'My name is ' + @name
  end
end

MyClass.new('mud') do
  show_name
end

# >> My name is mud

有关更多信息,请参阅Gregory Brown最优秀的Ruby Best Practices“创意共享许可Chapter 2”中的“界面简化框架”一节. (它的作者和发行商正在逐渐把整个事情整合起来,但是你当然可以买一个副本来支持这个工作,iPhone版是特别实惠的.)@H_404_3@

猜你在找的Ruby相关文章