有很多特別的東西值得一提,但這些東西都太簡單太容易看到,稍微學一下Ruby就會體會到,反而覺得沒必要特意提。
很多優點要有些概念才能明白到底有多方便,舉例來說,alias可以改變method,而不用inheritance去改。原本OOPL裡會用 interface/class 先包好,在良好的設計下,可以簡單地抽換行為,比方對method做log。注意,要有良好的設計,還有隨之的規範
一個簡單的應用是,若我們能改寫輸出方法,我們就能記錄輸出訊息,方便Unit Test,而不用改寫被測試的 函式/物件。
視語言的不同,可以用巨集或wrapper object實作,這裡通稱 fake_puts。fake_puts會記錄輸出的字串,再真的呼叫 printf / cout / System.out,於是我們用的所有物件得先遵守這個設計,使用fake_puts,而不是直覺的 printf / cout / System.out。
這有很多問題:不方便、已寫好的code很難改、沒有source code無解,但Ruby可以直接改變既定的method,非常簡單:
$record = [] alias old_puts puts def puts(str) $record << str old_puts str end
只要在程式裡加入上段的code,所有程式不用更動,行為照舊,而且所有用puts輸出的訊息都有存到形態為Array的全域變數$record。Ruby就是這麼簡單又強悍。
Really nice blog post.provided a helpful information.I hope that you will post more updates like this Ruby on Rails Online Course
回覆刪除ordu eskort
回覆刪除kırklareli eskort
osmaniye eskort
kocaeli eskort
eskişehir eskort
muğla eskort
düzce masöz
manisa masöz
female to male spa near me is more than just a luxurious treatit's an investment in your health and well-being.
回覆刪除Pile foundations are a vital solution for many engineering challenges, particularly when dealing with weak soil or heavy loads. Their versatility and effectiveness make them a preferred choice in various construction projects.
回覆刪除pile foundation bangalore