以往程式要物件做什麼時,都會先檢查型別,例如下面的程式碼(C#):
當呼叫Test這個函式時,一定得檢查引數p是否為Parent或其衍生類別,但是在Ruby中,變數是沒有型別的,丟進來的到底是什麼也不知道。現在用Ruby寫一段類似的程式碼:
上面的程式碼中,宣告了三個類別,其中TestClass跟TestClass2都有相同的函式叫test,但是這兩個類別並沒有繼承的關係。而TestContainer裡面的classtest就是用來測試這兩個類別,測試的程式碼如下:
執行之後會分別印出test跟test2,在執行container.classtest時,直譯器不檢查型別,只管有沒有一個叫test的函式,有的話就執行它。
以上就是Ruby的Duck Typing,Ruby是一個非常有趣的語言,身為程式設計師,不玩玩這類直譯式語言就太可惜了!
我看不懂...O_Q
回覆刪除話說,要跳入程式設計師的門檻會不會很高啊??
感覺不會耶,你看教主是學歷史的,結果現在在當工程師~~
回覆刪除耶~你沒講我都忘記了
回覆刪除只記得教主很糟糕這件事而已...
@Sen:
回覆刪除別以為我只會糟糕而已!話說,跳入這一行很簡單,但是要混得還不錯是件挺麻煩的事啊。