は次の,
ように定義されます。
Collection>>, aCollection
^self copy addAll: aCollection; yourself
そのため、単一のキャラクターをコレクションであるかのように操作しようとします。それはエラーを説明しています。
,
大規模なコレクションの場合は、毎回コピーが行われるため、使用して構築したくありません。したがって、ストリーミング プロトコルを使用します。
|data tag|
data := '123456778'.
tag := String streamContents: [:s |
data do: [ :char |
s nextPut: char]]
Collection>>do:separatedBy:
また、データ間にセパレーターを追加する方法も見てください。
[編集] ああ、わかりました、それは次のようなものです
|data tag tags state|
data := '<html>bla 12 <h1/></html>'.
state := #outside.
tags := OrderedCollection new.
tag := ''.
data do: [ :char |
state = #outside ifTrue: [
char = $< ifTrue: [
state := #inside.
tag := '' ]]
ifFalse: [
char = $> ifTrue: [
state := #outside.
tags add: tag]
ifFalse: [ tag := tag, (char asString)]]].
tags
"an OrderedCollection('html' 'h1/' '/html')"