On Sat, 30 Jul 2011 08:52:53 -0500
Jonathan Wright <j...@jondw.com> wrote:

> 
> Hello,
> 
> I'm trying to extend the Matrix class by making it able to add and
> subtract matrices.  So far I've implemented the following code to add:
> 
> + aMatrix
>       | newMatrix rowCount columnCount sum |
>       rowCount := self rowCount.
>       columnCount := self columnCount.
>       newMatrix := Matrix rows: rowCount columns: columnCount.
>       
>       1 to: rowCount do: [ :selectRow | 
>               1 to: columnCount do: [ :selectColumn |
>               sum := (self at: selectRow at: selectColumn) + 
>                                       (aMatrix at: selectRow at:
>   selectColumn). newMatrix at: selectRow at: selectColumn put: sum.]].
>       ^newMatrix.
> 
> Now I want to implement a method for subtracting matrices.  However,
> I'd like to use the same code.  I tried to implement an operand
> selector, however, it errors out.
> 
> Something like this:
> 
> operand: operand matrix: aMatrix
>       | newMatrix rowCount columnCount sum |
>       rowCount := self rowCount.
>       columnCount := self columnCount.
>       newMatrix := Matrix rows: rowCount columns: columnCount.
>       
>       1 to: rowCount do: [ :selectRow | 
>               1 to: columnCount do: [ :selectColumn |
>               sum := (self at: selectRow at: selectColumn) operand 
>                                       (aMatrix at: selectRow at:
>   selectColumn). newMatrix at: selectRow at: selectColumn put: sum.]].
>       ^newMatrix.
> 
> I know this is not SmallTalk convention, but how should I pursue
> something like this?
> 
> Thank You,
> Jonathan
> _______________________________________________
> Beginners mailing list
> Beginners@lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
> 

I answered my own question.  How I love being able to look at all the
source code in this handy Browser in Squeak!

I implemented the following:

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.


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

Reply via email to