我的任務是爲編碼挑戰創建一個無與倫比的tic tac toe對手,並且我想創建一個Ruby寶石這樣做,它具有適當的測試覆蓋率和體面的面向對象設計(OOD)。在Ruby中,使用「def initialize(value ='')」初始化類實例有什麼好處
雖從未在我自己的寶石,並且是適當的OOD原則,新的學生,我找到了一個很好的博客文章,通過走正是我需要的:http://codequizzes.wordpress.com/2013/10/25/creating-a-tic-tac-toe-game-with-ruby/
在定義Cell類,下面的代碼給出一個例子:
module TicTacToe
class Cell
attr_accessor :value
def initialize (value = "")
@value = value
end
end
end
在我看來,雖然,鑑於此初始化的簡單,我們可以很容易地做到這一點:
module TicTacToe
class Cell
attr_accessor :value
def initialize
@value = ""
end
end
end
那麼以第一種方式完成第一種方法的理由是什麼?
編輯
好吧,我現在感覺有點傻;閱讀博客文章有點接近,上面清清楚楚地寫着
Cell類上纏繞有井字模塊遵循紅寶石寶石公約和防止>類名稱衝突時寶石都包含在其他項目。 如果Cell初始化時沒有任何參數,那麼單元格的值將是空字符串,但Cell也可以用參數進行初始化。實例化單元后,其值不能更新。
不過,我仍然困惑的最後一句話,「細胞被實例化,它的價值不能被更新後。」
我認爲在這個例子中不正確,因爲我的理解,在attr_accessor方法使價值可讀可寫的 - 因爲它是可寫的,我不能說
move = Cell.new
move.value = X
更新
第一種方式讓'「」''爲在value'默認值,所以'值=>「 「'Cell.new',但'value =>」cat「'for Cell.new(」cat「)'。 – 2014-11-14 17:35:39