簡體   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