을 구현하기 위해 사전 준비 작업을 해왔습니다. 예를 들어 #size
, #at:
, #do:
등과 같은 메시지 관련 문제를 해결해야했습니다. 그 중에서도 좋은 해결책을 찾을 수없는 것들이 있습니다. 예를 들어 #new:
(클래스면)과 #at:put:
(인스턴스)이 필요합니다 (사용하는 바이트 수는 결국 문자열에 포함될 실제 문자에 따라 다름).사람들은 스몰 토크에서 UTF-8을 어떻게 구현합니까?
고려할 수있는 한 가지 아이디어는 실제로 문자열의 일부가 아닌 추가 (사용되지 않은) null 바이트를 꼬리에 할당하고 null 위치에서 하나가 부족한 경우에만 #become:
을 사용하는 것입니다. 이것은 좋은 (또는 나쁜) 아이디어입니까? 적절한 구현은 어떻게해야합니까?
감사합니다. aka.nice. 나는 이것을 고려했지만 시도하지 않았다. 왜냐하면 새로운 클래스가 String으로부터 상속받지 않을 것이기 때문에 동기화 문제 (두 클래스가 함께 진화하는 것)와 코드의 중요한 중복 인 것처럼 보인다. 이 비록). –
@LeandroCaniglia ok, Cuisine의 문제 일 수 있습니다.이 스킴에서는 String이 추상 (포인터) 클래스이고, UTF8String은 variableByteSubclass이고, ByteString은 Squeak과 같이 다른 잘 알려진 인코딩 규칙을 따릅니다. –
오 예. 당신 말이 맞아요! 나는 그 가능성을 고려하지 않았다. 나는 Cuis를 사용하고 있지는 않지만 내 시스템에서 추상 클래스 인'String'은 바이트입니다. 리펙토링에 대한 귀하의 생각은 나에게 많은 의미를 부여합니다. –