我是Smalltalk的新手,目前正在接受一個類的初始化。其中一個我們被分配的問題,需要創建一個新的類「HeavyMatrix」,被稱爲是這樣 -創建一個矩陣類,可以在未聲明矩陣大小的情況下進行初始化
aMatrix := HeavyMatrix new.
注意,沒有初始大小分配。創建時大小應該是不確定的。然後,類增加值以下方法矩陣 -
aMatrix setRow:1 column:2 value:7.
所有的矩陣還沒有被宣佈以這種方式默認爲0值新的類HeavyMatrix不應該繼承以外的任何比對象(即不是矩陣或陣列)。任何Smalltalkers能幫助我嗎?還有其他一些類必須包含的方法,但我認爲一旦我能夠初始化類,我就可以確定其他所有方法。謝謝!
究竟是什麼*不*確定的大小?會有一個時間點的大小是固定的,然後消息'setRow:column:value:'變得非法? – quamrana 2013-04-06 15:40:15
您的類的實例可能有一個Matrix類的實例var,最初設置爲nil。然後當你的實例收到一條setRow:column:value的消息時,它會計算它需要的Matrix的大小,實例化它,然後設置它的值。隨後調用setRow:column:value:可能需要您創建一個新的Matrix,複製舊Matrix的值,然後存儲新值。代碼效率不高,但應該滿足要求。 – 2013-04-06 16:21:28
不,不應該有一次,當setRow:column:value:成爲非法的時候。我想在setRow方法調用中創建矩陣,然後將這些值複製到一個新矩陣中。如果該方法被調用並宣佈爲「非法」。確實不是很有效率......我想也許使用一個可擴展的集合,如OrderedCollection?無論我使用什麼東西,如果這件東西具有必要的固定大小來聲明,似乎非常不方便。 – 2013-04-06 16:30:32