Re: [問題] Ruby 與 Interface Oriented Design
※ 引述《adrianshum (Alien)》之銘言:
: 所以單純為了達到這個效果, 你只要和 "使用者"
: 協議好中間的 interface 就可以了.
靠著 unit test
: 但如果你想要的是 compile time checking, 那麼
: 我就幫不上忙了 :P 以我所知, 由於 Ruby 是
: Ducking type, 只有到真正跑時才能知道某 object
: 有沒有支援某 'interface', 你最多只能在運作
: 是用 respond_to 在 runtime 檢查. 這和 Java
: (or C++ or C# etc) 在 compile time 已經能
: "確定" interface 的支援很不同. 但這種又是 strongly-
: typed language 的特徵, 要套在 Ruby 用又好像不太合適.
: Alien
Ruby 也是 strongly-typed, 一般是這樣說的
就我所看到的,weakly-typed 通常是指 type 跟 type 間的界線不明確
也就是說,type 跟 type 間經常會發生 implicit conversion
跟 Perl 不熟,不過 Perl 有一個狀況個人覺得很可怕
print '123' + 1
這樣的結果會是 124
我也不清楚會是 '124' 呢,還是 124
也許這在 Perl 裡根本不重要
print '123' + 1 + 1
會是 125
print '123' + 1 . '1'
會是 1241
反之在 Ruby, print '123' + 1 會有錯誤:can't convert Fixnum into String
一定要這樣做:
print '123'.to_i + 1 才可以得到 124
print ('123'.to_i + 1).to_s + '1' 才可以得到 1241
否則會得:String can't be coerced into Fixnum
dynamic typing 本來就不可能做到 compile-time check,
強制要求這點是個不合理的要求。不過我相信 unit test 可以解決
大部份的 check 需求。可能沒有 compile-time check 要來得有力,
不過這更強迫 programmer 寫下 test case, 也許是好事 :)
(畢竟 test case 還會迫使 programmer 分離模組)
--
『風車』が廻り続ける度に 『美しき』幻想が静かに紡がれ
『焔』の揺らめきの外に 『腕』を伸ばす愚かな者達 -《Roman》5th Story
『宝石』をより多く掴もうと 『朝と夜』の狭間を彷徨い続ける Track 10
『星屑』の砂の煌めきにも 『葡萄酒』の仄甘い陶酔を魅せ 黄昏の賢者
『賢者』が忌避する檻の中から 『伝言』の真意を彼等に問うだろう
『天使』が别れを告げし時 『地平線』は第五の物語を識る
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.28.18
推
02/21 16:40, , 1F
02/21 16:40, 1F
推
02/21 21:04, , 2F
02/21 21:04, 2F
→
02/21 21:06, , 3F
02/21 21:06, 3F
→
02/21 21:08, , 4F
02/21 21:08, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 8 之 9 篇):
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章