ruby語言中代碼塊作為方法的參數使用

來源:互聯網
上載者:User

Ruby方法可以接受代碼塊作為參數是一種非常靈活的用法,也是一種非常優秀的設計思路。假設有如1所示的3個方法:

                                                       圖1

從圖1中可以看出,方法A、方法B和方法C大量的代碼塊都是完全相同的。那麼是不是需要定義3個方法?是不是還有更好的做法?
在軟體開發領域,有一條重要的DRY規則:不要重複。在圖1的3個方法中,可發現它們包含了大量的重複代碼,為此,將上面3個方法合并成一個方法,而3個方法中特定的代碼塊則作為參數傳入,這種做法2所示。

                                                                               
圖2

從圖2中可以看出,通過使用代碼塊作為參數,可用一個方法來代替多個方法,從而提供更好的代碼複用,保證軟體具有更好的可維護性。

範例程式碼:

@testdata=Array.new
@testdata<<”孫悟空”
@testdata<<”豬八戒”

def make(thing)
 puts “準備工作”
 yield(thing)
 puts “收工動作”
end

def pp(key1,key2)
  puts key1+”和”+key2
end

make(@testdata){|a|
    pp(*a)
}

make(”豬八戒”){|a|
    puts a
}

make(”唐僧”){|a|
    puts a
}

運行結果:

準備工作

孫悟空和豬八戒

收工動作

準備工作

豬八戒

收工動作

準備工作

唐僧

收工動作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.