[英]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.