我一直在做一些初步努力,實施UTF8String
,我不得不解決與消息有關的問題,如#size
,#at:
,#do:
等,其中有一些我找不到一個好的解決方案。示例包括#new:
(類方)和#at:put:
(實例),因爲它們需要(或使用)的字節數取決於字符串最終將包含的實際字符。人們如何在Smalltalk中實現UTF-8?
我們可以考慮的一個想法是在尾部分配額外的(未使用的)空字節,實際上它們不是字符串的一部分,只有在空行使用空位時才使用#become:
。這是一個好的(或壞的)想法嗎?如何正確的實施工作?
謝謝aka.nice。我已經考慮過了,但沒有嘗試(到目前爲止),因爲新類不會從String繼承,並且可能會產生一些同步問題(兩個類一起演變)以及似乎是代碼的重要副本(不太確定這雖然)。 –
@LeandroCaniglia好的,可能是Cuis中的一個問題,在這個模式中,String就像Squeak一樣需要一個抽象(指針)類,UTF8String一個variableByteSubclass和另一個ByteString(帶有一些衆所周知的編碼約定)。 –
哦,是的。你是對的!我沒有考慮過這種可能性。我沒有使用Cuis,但在我的系統中,抽象類String是字節。現在,您對重構的想法對我來說很有意義。 –