Hi Jonathan,
On Sat, 30 Jul 2011, Jonathan Wright wrote:
snip
perform: anOpperator with: aMatrix | newMatrix rowCount columnCount result | rowCount := self rowCount. columnCount := self columnCount. newMatrix := Matrix rows: rowCount columns: columnCount.
1 to: rowCount do: [ :selectRow | 1 to: columnCount do: [ :selectColumn | result := (self at: selectRow at: selectColumn) perform: anOpperator with: (aMatrix at: selectRow at: selectColumn). newMatrix at: selectRow at: selectColumn put: result.]]. ^newMatrix.
It's not such a good idea, to override #perform:with:, because your Matrix (and all other Matrix instances) will behave differently.
But you can use #with:collect: to achieve what you'd like to. A few examples:
In methods:
+ aMatrix
^self with: aMatrix collect: [ :each :other | each + other ]
- aMatrix
^self with: aMatrix collect: [ :each :other | each - other ]
Directly:
m1 with: m2 collect: [ :each :other | each + other ]
m1 with: m2 collect: [ :each :other | each - other ]
Or the tricky way: (which relies on Symbol >> #value:value:)
m1 with: m2 collect: #+
m1 with: m2 collect: #-
Levente
where the subtraction/addition looks like this: subtractMatrix := matrixOne perform: #- with: matrixTwo. _______________________________________________ Beginners mailing list Beginners@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/beginners