On Sat, 30 Jul 2011 09:34:02 -0500
Jonathan Wright <j...@jondw.com> wrote:

> 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
> 

Something I don't understand about this however.  Why does the
"result := (self at: selectRow at: selectColumn) perform: anOpperator
with: (aMatrix at: selectRow at: selectColumn)"
statement use the Object class and not the Matrix class I extended?

_______________________________________________
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Reply via email to