Array new: 10 withAll: Array newこれだと、全要素が同一の an Array になってしまう。
この手の顕在化しにくいバグは多い。| array | array _ Array new: 10 withAll: Array new. array first == array last => true
#(()()()()()()()()()())ま、お約束ということでこれでもいいのですが、できたら n 個でも使える手をお願いします(^_^;)。
Array streamContents: [ : stream | 10 timesRepeat: [stream nextPut: Array new] ]--sumim
(1 to: 10) collect: [ : void | Array new ]
(Array new: 10) collect: [ : void | Array new ]
(Array new: 10 withAll: [Array new]) collect: [ : each | each value ]
(Array new: 10 withAll: 'Array new') evalStrings
(1 to: 10) inject: (Array new: 10) into: [ : array : index | array at: index put: Array new; yourself ]
((1 to: 10) inject: OrderedCollection new into: [ : collection : void | collection add: Array new; yourself ]) asArray
0 adaptToCollection: (Array new: 10 withAll: Array) andSend: #new:
(Array new: 10) gather: [ : each | Array with: Array new ]
(Array new: 10) in: [ : array | (1 to: array size) do: [ : index | array at: index put: Array new ]. array ]
[ : array | 1 to: array size do: [ : index | array at: index put: Array new ]. array ] value: (Array new: 10)
(Array new: 10 withAll: Array new) deepCopyでいかがですか。--abee
| c | c _ OrderedCollection with: Array new. c addAll: c. c add: Array new. c asArray deepCopy.
((OrderedCollection with: Array new) ifNotNilDo: [:c | c addAll: c]; add: Array new; yourself) asArray deepCopy
((OrderedCollection new: 11) ifNotNilDo: [:c | c add: Array new. c addAll: c]) asArray deepCopy
このページを編集 (2737 bytes)
このページは Swiki ブック内で孤立しています。 |
This page has been visited 1848 times.