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

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

Oh because "(self at: selectRow at: selectColumn)" returns an Integer
not a Matrix, duh.

Sorry for so many comments.
_______________________________________________
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Reply via email to