Hi Roelof, Polymorphism is the answer. Object >> flattenInto: result result nextPut: anObject UndefinedObject >> flattenInto: result ^self Collection >> flattenInto: result self do: [ :item | item flattenInto: result ] flatten: anObject ^ (OrderedCollection streamContents: [ :stream | anObject flattenInto: stream ]) asArray Noury
On 13 Sep 2020, at 11:26, Roelof Wobben via Pharo-users <pharo-users@lists.pharo.org> wrote:
Hello,
I know that OOP is not asking a object what it is but I have to flatten a array so I did this :
flattenArray: aCollection ^ (OrderedCollection streamContents: [ :stream | self flatten: aCollection into: stream ]) asArray
flatten: anObject into: result ^ anObject isCollection ifTrue: [ anObject do: [ :item | self flatten: item into: result ] ] ifFalse: [ anObject ifNotNil: [ result nextPut: anObject ] ]
The name flattenArray is given bij exercism.
Now I wonder how I can make this more a OOP solution.
Can someone give me some hints or some examples ?
Roelof