加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

重写简单的ruby函数使用块

发布时间:2020-12-17 01:20:46 所属栏目:百科 来源:网络整理
导读:我不知道正确的术语.我试图google它,找不到任何因为这个原因. 我正在编写一个Ruby库,我想重写这些函数,所以他们的工作方式如下,因为我喜欢它的可读性(在一个块内?) 我有一个这样做的功能 @dwg = Dwg.new("test.dwg")@dwg.line([0,0],[1,1,0])@dwg.save 我想
我不知道正确的术语.我试图google它,找不到任何因为这个原因.

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

我有一个这样做的功能

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

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

Dwg.new("test.dwg") do

   line([0,0])
   save

end

你可以概述我的方式吗?

解决方法

您可以定义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版是特别实惠的.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读