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