繁体   English   中英

重写简单的ruby函数以使用块

[英]Rewrite simple ruby function to use a block

我不知道正确的术语。 我试图谷歌它,因为这个原因找不到任何东西。

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

我有一个功能,这样做

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

我想重写它,所以它的工作方式就像这样

Dwg.new("test.dwg") do

   line([0,0,0],[1,1,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一书中最近Creative-Commons许可的第2章中的“用于界面简化的块”部分。 (它的作者和出版商正在逐步整理所有内容,但你当然可以购买一份副本来支持这项工作.iPhone版本特别实惠。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM