"txporter" == txporter txporter@mindspring.com writes:
txporter> As a new Squeaker, I am slowly making my way through Mark's book on Squeak. txporter> At the end of chapter 2, there are some exercises, specifically No. 3: txporter> Write a piece of workspace code [...] to do the following: txporter> (a) Replace all vowels in the string 'Squeak' with dashes. txporter> (b) Compute the average of a set of integers in an array.
txporter> I did this like so, but think it is more like "procedural-language speak' and not Smalltalk. Anyone have any more elegant solutions? I particularly do not like the use of the aCount variable.
txporter> aString := 'squeak'. txporter> aCount := 1. txporter> aString do: [:element | element isVowel ifTrue: txporter> [aString at: aCount put: $-]. "Could aString be self?" txporter> aCount := aCount +1].
This one took me about five minutes. I was looking for a way to convert an array of Character to a String... had to stumble across #withAll: ...
String withAll: ('Squeak' asArray collect: [:ch | ch isVowel ifTrue: [$-] ifFalse: [ch]])
Mark, is there a simpler way you had in mind?
txporter> anArray := #(12 14 16 18 20). txporter> aSum := 0. txporter> aCount := 0. txporter> anArray do: [:num | aSum := aSum + num. txporter> aCount := aCount +1]. txporter> anAverage := aSum / aCount.
You're gonna shoot me when you see how easy this is:
anArray := #(12 14 16 18 20). theAverage := (anArray sum) / (anArray size)
Learn to use the method finder. Helps tremendously.