[Pkg] The Trunk: Help-Squeak-TerseGuide-tpr.8.mcz

commits at source.squeak.org commits at source.squeak.org
Wed May 30 23:36:53 UTC 2018


tim Rowledge uploaded a new version of Help-Squeak-TerseGuide to project The Trunk:
http://source.squeak.org/trunk/Help-Squeak-TerseGuide-tpr.8.mcz

==================== Summary ====================

Name: Help-Squeak-TerseGuide-tpr.8
Author: tpr
Time: 30 May 2018, 4:36:43.105355 pm
UUID: 9754754a-173e-4793-b0c0-1dc047ec9bf6
Ancestors: Help-Squeak-TerseGuide-topa.7

Update some help related methods; plenty more to come in this class.

=============== Diff against Help-Squeak-TerseGuide-topa.7 ===============

Item was changed:
  ----- Method: TerseGuideHelp class>>arithmetic (in category 'pages') -----
  arithmetic
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #arithmetic"
- 
  	^HelpTopic
  		title: 'Arithmetic Expressions' 
  		contents:
  
  '"************************************************************************
   * Arithmetic expressions:															*
   ************************************************************************"
  | x |
  x := 6 + 3.								"addition"
  x := 6 - 3.								"subtraction"
  x := 6 * 3.								"multiplication"
  x := 1 + 2 * 3.							"evaluation always left to right (1 + 2) * 3"
  x := 5 / 3.								"division with fractional result"
  x := 5.0 / 3.0.							"division with float result"
  x := 5.0 // 3.0.							"integer divide"
  x := 5.0 \\ 3.0.							"integer remainder"
  x := -5.									"unary minus"
  x := 5 sign.								"numeric sign (1, -1 or 0)"
  x := 5 negated.							"negate receiver"
  x := 1.2 integerPart.						"integer part of number (1.0)"
  x := 1.2 fractionPart.					"fractional part of number (0.2)"
  x := 5 reciprocal.						"reciprocal function"
  x := 6 * 3.1.								"auto convert to float"
  x := 5 squared.							"square function"
  x := 25 sqrt.							"square root"
  x := 5 raisedTo: 2.						"power function"
  x := 5 raisedToInteger: 2.				"power function with integer"
  x := 5 exp.								"exponential"
  x := -5 abs.								"absolute value"
  x := 3.99 rounded.						"round"
  x := 3.99 truncated.						"truncate"
  x := 3.99 roundTo: 1.					"round to specified decimal places"
  x := 3.99 truncateTo: 1.					"truncate to specified decimal places"
  x := 3.99 floor.							"truncate"
  x := 3.99 ceiling.						"round up"
  x := 5 factorial.							"factorial"
  x := -5 quo: 3.							"integer divide rounded toward zero"
  x := -5 rem: 3.							"integer remainder rounded toward zero"
  x := 28 gcd: 12.							"greatest common denominator"
  x := 28 lcm: 12.							"least common multiple"
  x := 100 ln.								"natural logarithm"
  x := 100 log.							"base 10 logarithm"
  x := 100 log: 10	.						"logarithm with specified base"
  x := 100 floorLog: 10.					"floor of the log"
  x := 180 degreesToRadians.			"convert degrees to radians"
  x := 3.14 radiansToDegrees.			"convert radians to degrees"
  x := 0.7 sin.								"sine"
  x := 0.7 cos.							"cosine"
  x := 0.7 tan.								"tangent"
  x := 0.7 arcSin.							"arcsine"
  x := 0.7 arcCos.							"arccosine"
  x := 0.7 arcTan.							"arctangent"
  x := 10 max: 20.							"get maximum of two numbers"
  x := 10 min: 20.							"get minimum of two numbers"
  x := Float pi.							"pi"
  x := Float e.								"exp constant"
  x := Float infinity.						"infinity"
  x := Float nan.							"not-a-number"
  x := Random new next; yourself. x next.	"random number stream (0.0 to 1.0)"
  x := 100 atRandom.						"quick random number"
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>array (in category 'pages') -----
  array
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #array"
- 
  	^HelpTopic
  		title: 'Array' 
  		contents:
  
  '"************************************************************************
   * Array:         Fixed length collection												*
   * ByteArray:     Array limited to byte elements (0-255)								*
   * WordArray:     Array limited to word elements (0-2^32)							*
   ************************************************************************"
  | b x y sum max |
  x := #(4 3 2 1).									"constant array"
  x := Array with: 5 with: 4 with: 3 with: 2.			"create array with up to 4 elements"
  x := Array new: 4.								"allocate an array with specified size"
  x												"set array elements"
     at: 1 put: 5;
     at: 2 put: 4;
     at: 3 put: 3;
     at: 4 put: 2.
  b := x isEmpty.									"test if array is empty"
  y := x size.										"array size"
  y := x at: 4.										"get array element at index"
  b := x includes: 3.								"test if element is in array"
  y := x copyFrom: 2 to: 4.						"subarray"
  y := x indexOf: 3 ifAbsent: [0].					"first position of element within array"
  y := x occurrencesOf: 3.						"number of times object in collection"
  x do: [:a | Transcript show: a printString; cr].		"iterate over the array"
  b := x allSatisfy: [:a | (a >= 1) & (a <= 4)].		"test if all elements meet condition"
  y := x select: [:a | a > 2].							"return collection of elements that pass test"
  y := x reject: [:a | a < 2].							"return collection of elements that fail test"
  y := x collect: [:a | a + a].						"transform each element for new collection"
  y := x detect: [:a | a > 3] ifNone: [].				"return first element that passes test"
  y := x findFirst: [:a | a < 3].						"find position of first element that passes test"
  sum := 0. x do: [:a | sum := sum + a]. sum.		"sum array elements"
  sum := 0. 1 to: (x size) do: [:a | sum := sum + (x at: a)].	"sum array elements"
  sum := x inject: 0 into: [:a :c | a + c].				"sum array elements"
  max := x inject: 0 into: [:a :c | (a > c)				"find max element in array"
     ifTrue: [a]
     ifFalse: [c]].
  y := x shuffled.									"randomly shuffle collection"
  y := x asArray.									"convert to array"
  y := x asByteArray.								"convert to byte array"
  y := x asWordArray.								"convert to word array"
  y := x asOrderedCollection.						"convert to ordered collection"
  y := x asSortedCollection.						"convert to sorted collection"
  y := x asBag.									"convert to bag collection"
  y := x asSet.									"convert to set collection"
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>assignment (in category 'pages') -----
  assignment
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #assignment"
- 
  	^HelpTopic
  		title: 'Assignment' 
  		contents:
  
  '"************************************************************************
   * Assignment:																		*
   ************************************************************************"
  | x y z |
  x _ 4.									"assignment (Squeak) <-"
  x := 5.									"assignment"
  x := y := z := 6.							"compound assignment"
  x := (y := 6) + 1.
  x := Object new.						"bind to allocated instance of a class"
  x := 123 class.							"discover the object class"
  x := Integer superclass.					"discover the superclass of a class"
  x := Object allInstances.				"get an array of all instances of a class"
  x := Integer allSuperclasses.			"get all superclasses of a class"
  x := 1.2 hash.							"hash value for object"
  y := x copy.								"copy object"
  y := x shallowCopy.						"copy object (not overridden)"
  y := x deepCopy.						"copy object and instance vars"
  y := x veryDeepCopy.					"complete tree copy using a dictionary"
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>association (in category 'pages') -----
  association
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #association"
- 
  	^HelpTopic
  		title: 'Association' 
  		contents:
  
  '"************************************************************************
   * Associations:																		*
   ************************************************************************"
  | x y |
  x := #myVar->''hello''.
  y := x key.
  y := x value.
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>bag (in category 'pages') -----
  bag
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #bag"
- 
  	^HelpTopic
  		title: 'Bag' 
  		contents:
  
  '"************************************************************************
   * Bag:        like OrderedCollection except elements are in no						*
   *                particular order														*
   ************************************************************************"
  | b x y sum max |
  x := Bag with: 4 with: 3 with: 2 with: 1.			"create collection with up to 4 elements"
  x := Bag new.									"allocate collection"
  x add: 4; add: 3; add: 1; add: 2; yourself.			"add element to collection"
  x add: 3 withOccurrences: 2.					"add multiple copies to collection"
  y := x addAll: #(7 8 9).							"add multiple elements to collection"
  y := x removeAll: #(7 8 9).						"remove multiple elements from collection"
  y := x remove: 4 ifAbsent: [].					"remove element from collection"
  b := x isEmpty.									"test if empty"
  y := x size.										"number of elements"
  b := x includes: 3.								"test if element is in collection"
  y := x occurrencesOf: 3.						"number of times object in collection"
  x do: [:a | Transcript show: a printString; cr].		"iterate over the collection"
  b := x allSatisfy: [:a | (a >= 1) & (a <= 4)].		"test if all elements meet condition"
  y := x select: [:a | a > 2].							"return collection of elements that pass test"
  y := x reject: [:a | a < 2].							"return collection of elements that fail test"
  y := x collect: [:a | a + a].						"transform each element for new collection"
  y := x detect: [:a | a > 3] ifNone: [].				"return first element that passes test"
  sum := 0. x do: [:a | sum := sum + a]. sum.		"sum elements"
  sum := x inject: 0 into: [:a :c | a + c].				"sum elements"
  max := x inject: 0 into: [:a :c | (a > c)				"find max element in collection"
     ifTrue: [a]
     ifFalse: [c]].
  y := x asOrderedCollection.						"convert to ordered collection"
  y := x asSortedCollection.						"convert to sorted collection"
  y := x asBag.									"convert to bag collection"
  y := x asSet.									"convert to set collection"
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>bitwise (in category 'pages') -----
  bitwise
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #bitwise"
- 
  	^HelpTopic
  		title: 'Bitwise Manipulation' 
  		contents:
  
  '"************************************************************************
   * Bitwise Manipulation:																*
   ************************************************************************"
  | b x |
  x := 16rFF bitAnd: 16r0F.			"and bits"
  x := 16rF0 bitOr: 16r0F.				"or bits"
  x := 16rFF bitXor: 16r0F.				"xor bits"
  x := 16rFF bitInvert.					"invert bits"
  x := 16r0F bitShift: 4.				"left shift"
  x := 16rF0 bitShift: -4.				"right shift"
  x := 16r80 bitAt: 8.					"bit at position (0|1)"
  x := 16r80 highBit.					"position of highest bit set"
  b := 16rFF allMask: 16r0F.			"test if all bits set in mask set in receiver"
  b := 16rFF anyMask: 16r0F.			"test if any bits set in mask set in receiver"
  b := 16rFF noMask: 16r0F.			"test if all bits set in mask clear in receiver"
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>block (in category 'pages') -----
  block
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #block"
- 
  	^HelpTopic
  		title: 'Blocks' 
  		contents:
  
  '"************************************************************************
   * Blocks:																			*
   *    - blocks are objects and may be assigned to a variable						*
   *    - value is last expression evaluated unless explicit return						*
   *    - blocks may be nested														*
   *    - specification [ arguments | | localvars | expressions ]							*
   *    - ^expression terminates block & method (exits all nested blocks)			*
   *    - blocks intended for long term storage should not contain ^					*
   ************************************************************************"
  | x y z fac |
  x := [ y := 1. z := 2. ]. x value.						"simple block usage"
  x := [ :argOne :argTwo |   argOne, '' and '' , argTwo.].	"set up block with argument passing"
  Transcript show: (x value: ''First'' value: ''Second''); cr.	"use block with argument passing"
  x := [:e | | v | v := 1. e + v] value: 2.					"localvar in a block"
  fac := [ :n | n > 1 ifTrue:  [n * (fac value: n-1)] ifFalse: [1]].	"closure on block variable"
  fac value: 5.											"closure variable scoped to its block"
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>boolean (in category 'pages') -----
  boolean
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #boolean"
- 
  	^HelpTopic
  		title: 'Boolean' 
  		contents:
  
  '"************************************************************************
   * Booleans:																		*
   ************************************************************************"
  | b x y |
  x := 1. y := 2.
  b := (x = y).								"equals"
  b := (x ~= y).							"not equals"
  b := (x == y).							"identical"
  b := (x ~~ y).							"not identical"
  b := (x > y).								"greater than"
  b := (x < y).								"less than"
  b := (x >= y).							"greater than or equal"
  b := (x <= y).							"less than or equal"
  b := b not.								"boolean not"
  b := (x < 5) & (y > 1).					"boolean and"
  b := (x < 5) | (y > 1).					"boolean or"
  b := (x < 5) and: [y > 1].					"boolean and (short-circuit)"
  b := (x < 5) or: [y > 1].					"boolean or (short-circuit)"
  b := (x < 5) eqv: (y > 1).					"test if both true or both false"
  b := (x < 5) xor: (y > 1).					"test if one true and other false"
  b := 5 between: 3 and: 12.				"between (inclusive)"
  b := 123 isKindOf: Number.				"test if object is class or subclass of"
  b := 123 isMemberOf: SmallInteger.		"test if object is type of class"
  b := 123 respondsTo: #sqrt.			"test if object responds to message"
  b := x isNil.								"test if object is nil"
  b := x isZero.							"test if number is zero"
  b := x positive.							"test if number is positive"
  b := x strictlyPositive.					"test if number is greater than zero"
  b := x negative.							"test if number is negative"
  b := x even.								"test if number is even"
  b := x odd.								"test if number is odd"
  b := x isLiteral.							"test if literal constant"
  b := x isInteger.							"test if object is integer"
  b := x isFloat.							"test if object is float"
  b := x isNumber.						"test if object is number"
  b := $A isUppercase.					"test if upper case character"
  b := $A isLowercase.					"test if lower case character"
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>character (in category 'pages') -----
  character
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #character"
- 
  	^HelpTopic
  		title: 'Character' 
  		contents:
  
  '"************************************************************************
   * Character:																		*
   ************************************************************************"
  | x y b |
  x := $A.										"character assignment"
  y := x isLowercase.							"test if lower case"
  y := x isUppercase.							"test if upper case"
  y := x isLetter.								"test if letter"
  y := x isDigit.								"test if digit"
  y := x isAlphaNumeric.						"test if alphanumeric"
  y := x isSeparator.							"test if seperator char"
  y := x isVowel.								"test if vowel"
  y := x digitValue.							"convert to numeric digit value"
  y := x asLowercase.						"convert to lower case"
  y := x asUppercase.						"convert to upper case"
  y := x asciiValue.							"convert to numeric ascii value"
  y := x asString.								"convert to string"
  b := $A <= $B.								"comparison"
  y := $A max: $B.
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>conditionalStatement (in category 'pages') -----
  conditionalStatement
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #conditionalStatement"
- 
  	^HelpTopic
  		title: 'Conditional Statement' 
  		contents:
  
  '"************************************************************************
   * Conditional Statements:															*
   ************************************************************************"
  | x switch result |
  x := 11.
  x > 10 ifTrue: [Transcript show: ''ifTrue''; cr].		"if then"
  x > 10 ifFalse: [Transcript show: ''ifFalse''; cr].	"if else"
  x > 10											"if then else"
     ifTrue: [Transcript show: ''ifTrue''; cr]
     ifFalse: [Transcript show: ''ifFalse''; cr].
  x > 10											"if else then"
     ifFalse: [Transcript show: ''ifFalse''; cr]
     ifTrue: [Transcript show: ''ifTrue''; cr].
  Transcript
     show:
        (x > 10
           ifTrue: [''ifTrue'']
           ifFalse: [''ifFalse'']);
     cr.
  Transcript										"nested if then else"
     show:
        (x > 10
           ifTrue: [x > 5
              ifTrue: [''A'']
              ifFalse: [''B'']]
           ifFalse: [''C'']);
     cr.
  switch := Dictionary new.						"switch functionality"
  switch at: $A put: [Transcript show: ''Case A''; cr].
  switch at: $B put: [Transcript show: ''Case B''; cr].
  switch at: $C put: [Transcript show: ''Case C''; cr].
  result := (switch at: $B) value.
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>constants (in category 'pages') -----
  constants
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #constants"
- 
  	^HelpTopic
  		title: 'Constants' 
  		contents:
  
  '"************************************************************************
   * Constants:																		*
   ************************************************************************"
  | b x |
  b := true.								"true constant"
  b := false.								"false constant"
  x := nil.									"nil object constant"
  x := 1.									"integer constants"
  x := 3.14.								"float constants"
  x := 2e-2.								"fractional constants"
  x := 16r0F.								"hex constant".
  x := -1.									"negative constants"
  x := ''Hello''.								"string constant"
  x := ''I''''m here''.							"single quote escape"
  x := $A.									"character constant"
  x := $ .									"character constant (space)"
  x := #aSymbol.							"symbol constants"
  x := #(3 2 1).							"array constants"
  x := #(''abc'' 2 $a).						"mixing of types allowed"
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>conversion (in category 'pages') -----
  conversion
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #conversion"
- 
  	^HelpTopic
  		title: 'Conversion' 
  		contents:
  
  '"************************************************************************
   * Conversion:																		*
   ************************************************************************"
  | x |
  x := 3.99 asInteger.				"convert number to integer (truncates in Squeak)"
  x := 3.99 asFraction.			"convert number to fraction"
  x := 3 asFloat.					"convert number to float"
  x := 65 asCharacter.			"convert integer to character"
  x := $A asciiValue.				"convert character to integer"
  x := 3.99 printString.			"convert object to string via printOn:"
  x := 3.99 storeString.			"convert object to string via storeOn:"
  x := 15 radix: 16.				"convert to string in given base"
  x := 15 printStringBase: 16.
  x := 15 storeStringBase: 16.
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>date (in category 'pages') -----
  date
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #date"
- 
  	^HelpTopic
  		title: 'Date' 
  		contents:
  
  '"************************************************************************
   * Date:																				*
   ************************************************************************"
  | x y b |
  x := Date today.								"create date for today"
  x := Date dateAndTimeNow.					"create date from current time/date"
  x := Date readFromString: ''01/02/1999''.			"create date from formatted string"
  x := Date newDay: 12 month: #July year: 1999.	"create date from parts"
  x := Date fromDays: 36000.						"create date from elapsed days since 1/1/1901"
  y := Date dayOfWeek: #Monday.				"day of week as int (1-7)"
  y := Date indexOfMonth: #January.				"month of year as int (1-12)"
  y := Date daysInMonth: 2 forYear: 1996.			"day of month as int (1-31)"
  y := Date daysInYear: 1996.						"days in year (365|366)"
  y := Date nameOfDay: 1.						"weekday name (#Monday,...)"
  y := Date nameOfMonth: 1.						"month name (#January,...)"
  y := Date leapYear: 1996.						"1 if leap year; 0 if not leap year"
  y := x weekday.									"day of week (#Monday,...)"
  y := x previous: #Monday.						"date for previous day of week"
  y := x dayOfMonth.								"day of month (1-31)"
  y := x day.										"day of year (1-366)"
  y := x firstDayOfMonth.							"day of year for first day of month"
  y := x monthName.								"month of year (#January,...)"
  y := x monthIndex.								"month of year (1-12)"
  y := x daysInMonth.								"days in month (1-31)"
  y := x year.										"year (19xx)"
  y := x daysInYear.								"days in year (365|366)"
  y := x daysLeftInYear.							"days left in year (364|365)"
  y := x asSeconds.								"seconds elapsed since 1/1/1901"
  y := x addDays: 10.								"add days to date object"
  y := x subtractDays: 10.							"subtract days to date object"
  y := x subtractDate: (Date today).				"subtract date (result in days)"
  y := x printFormat: #(2 1 3 $/ 1 1).				"print formatted date"
  b := (x <= Date today).							"comparison"
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>debugging (in category 'pages') -----
  debugging
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #debugging"
- 
  	^HelpTopic
  		title: 'Debugging' 
  		contents:
  
  '"************************************************************************
   * debugging:																		*
   ************************************************************************"
  | a b x |
  x := Object new.
  x yourself.								"returns receiver"
  String browse.							"browse specified class"
  x inspect.								"open object inspector window"
  x confirm: ''Is this correct?''.
  x halt.									"breakpoint to open debugger window"
  x halt: ''Halt message''.
  x notify: ''Notify text''.
  x error: ''Error string''.					"open up error window with title"
  x shouldNotImplement.					"flag message should not be implemented"
  x subclassResponsibility.				"flag message as abstract"
  x errorImproperStore.					"flag an improper store into indexable object"
  x errorNonIntegerIndex.				"flag only integers should be used as index"
  x errorSubscriptBounds: 13.			"flag subscript out of bounds"
  x primitiveFailed.						"system primitive failed"
  
  a := ''A1''. b := ''B2''. a become: b.			"switch two objects"
  Transcript show: a, b; cr.
  
  x doesNotUnderstand: (Message selector: #foo).	"flag message is not handled"
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>dictionary (in category 'pages') -----
  dictionary
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #dictionary"
- 
  	^HelpTopic
  		title: 'Dictionary' 
  		contents:
  
  '"************************************************************************
   * Dictionary:																		*
   * IdentityDictionary:   uses identity test (== rather than =)							*
   ************************************************************************"
  | b x y sum max |
  x := Dictionary new.								"allocate collection"
  x add: #a->4; add: #b->3; add: #c->1; add: #d->2; yourself.		"add element to collection"
  x at: #e put: 3.									"set element at index"
  b := x isEmpty.									"test if empty"
  y := x size.										"number of elements"
  y := x at: #a ifAbsent: [].							"retrieve element at index"
  y := x keyAtValue: 3 ifAbsent: [].					"retrieve key for given value with error block"
  y := x removeKey: #e ifAbsent: [].				"remove element from collection"
  b := x includes: 3.								"test if element is in values collection"
  b := x includesKey: #a.							"test if element is in keys collection"
  y := x occurrencesOf: 3.						"number of times object in collection"
  y := x keys.										"set of keys"
  y := x values.									"bag of values"
  x do: [:a | Transcript show: a printString; cr].		"iterate over the values collection"
  x keysDo: [:a | Transcript show: a printString; cr].			"iterate over the keys collection"
  x associationsDo: [:a | Transcript show: a printString; cr].	"iterate over the associations"
  x keysAndValuesDo: [:aKey :aValue | Transcript				"iterate over keys and values"
     show: aKey printString; space;
     show: aValue printString; cr].
  b := x allSatisfy: [:a | (a >= 1) & (a <= 4)].		"test if all elements meet condition"
  y := x select: [:a | a > 2].							"return collection of elements that pass test"
  y := x reject: [:a | a < 2].							"return collection of elements that fail test"
  y := x collect: [:a | a + a].						"transform each element for new collection"
  y := x detect: [:a | a > 3] ifNone: [].				"return first element that passes test"
  sum := 0. x do: [:a | sum := sum + a]. sum.		"sum elements"
  sum := x inject: 0 into: [:a :c | a + c].				"sum elements"
  max := x inject: 0 into: [:a :c | (a > c)				"find max element in collection"
     ifTrue: [a]
     ifFalse: [c]].
  y := x asArray.									"convert to array"
  y := x asOrderedCollection.						"convert to ordered collection"
  y := x asSortedCollection.						"convert to sorted collection"
  y := x asBag.									"convert to bag collection"
  y := x asSet.									"convert to set collection"
  
  Smalltalk at: #CMRGlobal put: ''CMR entry''.		"put global in Smalltalk Dictionary"
  x := Smalltalk at: #CMRGlobal.					"read global from Smalltalk Dictionary"
  Transcript show: (CMRGlobal printString).		"entries are directly accessible by name"
  Smalltalk keys do: [ :k |							"print out all classes"
     ((Smalltalk at: k) isKindOf: Class)
        ifFalse: [Transcript show: k printString; cr]].
  Smalltalk at: #CMRDictionary put: (Dictionary new).	"set up user defined dictionary"
  CMRDictionary at: #MyVar1 put: ''hello1''.			"put entry in dictionary"
  CMRDictionary add: #MyVar2->''hello2''.			"add entry to dictionary use key->value combo"
  CMRDictionary size.		"dictionary size"
  CMRDictionary keys do: [ :k |					"print out keys in dictionary"
     Transcript show: k printString; cr].
  CMRDictionary values do: [ :k |					"print out values in dictionary"
     Transcript show: k printString; cr].
  CMRDictionary keysAndValuesDo: [:aKey :aValue |	"print out keys and values"
     Transcript
        show: aKey printString;
        space;
        show: aValue printString;
        cr].
  CMRDictionary associationsDo: [:aKeyValue |		"another iterator for printing key values"
     Transcript show: aKeyValue printString; cr].
  Smalltalk removeKey: #CMRGlobal ifAbsent: [].		"remove entry from Smalltalk dictionary"
  Smalltalk removeKey: #CMRDictionary ifAbsent: [].	"remove user dictionary from Smalltalk dictionary"
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>dynamic (in category 'pages') -----
  dynamic
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #dynamic"
- 
  	^HelpTopic
  		title: 'Dynamic Message Calling/Compiling' 
  		contents:
  
  '"************************************************************************
   * Dynamic Message Calling/Compiling:												*
   ************************************************************************"
  | receiver message result argument keyword1 keyword2 argument1 argument2 |
  "unary message"
  receiver := 5.
  message := ''factorial'' asSymbol.
  result := receiver perform: message.
  result := Compiler evaluate: ((receiver storeString), '' '', message).
  result := (Message new setSelector: message arguments: #()) sentTo: receiver.
  
  "binary message"
  receiver := 1.
  message := ''+'' asSymbol.
  argument := 2.
  result := receiver perform: message withArguments: (Array with: argument).
  result := Compiler evaluate: ((receiver storeString), '' '', message, '' '', (argument storeString)).
  result := (Message new setSelector: message arguments: (Array with: argument)) sentTo: receiver.
  
  "keyword messages"
  receiver := 12.
  keyword1 := ''between:'' asSymbol.
  keyword2 := ''and:'' asSymbol.
  argument1 := 10.
  argument2 := 20.
  result := receiver
     perform: (keyword1, keyword2) asSymbol
     withArguments: (Array with: argument1 with: argument2).
  result := Compiler evaluate:
     ((receiver storeString), '' '', keyword1, (argument1 storeString) , '' '', keyword2, (argument2 storeString)).
  result := (Message
     new
        setSelector: (keyword1, keyword2) asSymbol
        arguments: (Array with: argument1 with: argument2))
     sentTo: receiver.
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>exceptionHandling (in category 'pages') -----
  exceptionHandling
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #exceptionHandling"
- 
  	^HelpTopic
  		title: 'Exception Handling' 
  		contents:
  
  '"************************************************************************
   * Exceptions:																		*
   ************************************************************************"
  | x |
  x := Object new.
  x error: ''Throwing an error''.
  
  NotFound signal.								"simply throwing a specific exception"
  NotFound signal: ''Throwing with a message''.	"throwing an exception with a custom text"
  
  x := [ 5 / 0 ]							"simple exception handler"
  		on: ZeroDivide do: [ 10 ]. 			
  x := [ 5 / 0 ]							"processing the exception in an exception handler" 
  		on: Error do: [:e | Transcript showln: e printString ]. 
  x := [ 5 / 0 ]							"different exception handlers for the same block"
  		on: ZeroDivide do: [ 10 ] 
  		on: MessageNotUnderstood do: [ 20 ]. 
  x := [ 5 / 0 ]							"one exception handler for two different exceptions"
  		on: ZeroDivide , ArithmeticError do: [ 10 ]. 
  
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>fileStream (in category 'pages') -----
  fileStream
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #fileStream"
- 
  	^HelpTopic
  		title: 'File Stream' 
  		contents:
  
  '"************************************************************************
   * FileStream:																		*
   ************************************************************************"
  | b x ios |
  ios := FileStream newFileNamed: ''ios.txt''.
  ios nextPut: $H; cr.
  ios nextPutAll: ''Hello File''; cr.
  ''Hello File'' printOn: ios.
  ''Hello File'' storeOn: ios.
  ios close.
  
  ios := FileStream oldFileNamed: ''ios.txt''.
  [(x := ios nextLine) notNil]
     whileTrue: [Transcript show: x; cr].
  ios position: 3.
  x := ios position.
  x := ios next.
  x := ios peek.
  b := ios atEnd.
  ios close.
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>internalStream (in category 'pages') -----
  internalStream
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #internalStream"
- 
  	^HelpTopic
  		title: 'Internal Stream' 
  		contents:
  
  '"************************************************************************
   * Internal Stream:																	*
   ************************************************************************"
  | b x ios |
  ios := ReadStream on: ''Hello read stream''.
  ios := ReadStream on: ''Hello read stream'' from: 1 to: 5.
  [(x := ios nextLine) notNil]
     whileTrue: [Transcript show: x; cr].
  ios position: 3.
  ios position.
  x := ios next.
  x := ios peek.
  x := ios contents.
  b := ios atEnd.
  
  ios := ReadWriteStream on: ''Hello read stream''.
  ios := ReadWriteStream on: ''Hello read stream'' from: 1 to: 5.
  ios := ReadWriteStream with: ''Hello read stream''.
  ios := ReadWriteStream with: ''Hello read stream'' from: 1 to: 10.
  ios position: 0.
  [(x := ios nextLine) notNil]
     whileTrue: [Transcript show: x; cr].
  ios position: 6.
  ios position.
  ios nextPutAll: ''Chris''.
  x := ios next.
  x := ios peek.
  x := ios contents.
  b := ios atEnd.
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>interval (in category 'pages') -----
  interval
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #interval"
- 
  	^HelpTopic
  		title: 'Interval' 
  		contents:
  
  '"************************************************************************
   * Interval:																			*
   ************************************************************************"
  | b x y sum max |
  x := Interval from: 5 to: 10.						"create interval object"
  x := 5 to: 10.
  x := Interval from: 5 to: 10 by: 2.				"create interval object with specified increment"
  x := 5 to: 10 by: 2.
  b := x isEmpty.									"test if empty"
  y := x size.										"number of elements"
  x includes: 9.									"test if element is in collection"
  x do: [:k | Transcript show: k printString; cr].		"iterate over interval"
  b := x allSatisfy: [:a | (a >= 1) & (a <= 4)].		"test if all elements meet condition"
  y := x select: [:a | a > 7].							"return collection of elements that pass test"
  y := x reject: [:a | a < 2].							"return collection of elements that fail test"
  y := x collect: [:a | a + a].						"transform each element for new collection"
  y := x detect: [:a | a > 3] ifNone: [].				"return first element that passes test"
  y := x findFirst: [:a | a > 6].						"find position of first element that passes test"
  sum := 0. x do: [:a | sum := sum + a]. sum.		"sum elements"
  sum := 0. 1 to: (x size) do: [:a | sum := sum + (x at: a)].	"sum elements"
  sum := x inject: 0 into: [:a :c | a + c].				"sum elements"
  max := x inject: 0 into: [:a :c | (a > c)				"find max element in collection"
     ifTrue: [a]
     ifFalse: [c]].
  y := x asArray.									"convert to array"
  y := x asOrderedCollection.						"convert to ordered collection"
  y := x asSortedCollection.						"convert to sorted collection"
  y := x asBag.									"convert to bag collection"
  y := x asSet.									"convert to set collection"
  
  '!

Item was changed:
  ----- Method: TerseGuideHelp class>>introduction (in category 'pages') -----
  introduction
+ 	"This method was automatically generated. Edit it using:"
+ 	"TerseGuideHelp edit: #introduction"
- 
  	^HelpTopic
  		title: 'General' 
  		contents:
  
  '"************************************************************************
   * Allowable characters:															*
   *    - a-z																			*
   *    - A-Z																			*
   *    - 0-9																			*
   *    - .+/\*~<>@%|&?																*
   *    - blank, tab, cr, ff, lf																*
   *																					*
   * Variables:																		*
   *    - variables must be declared before use										*
   *    - shared vars must begin with uppercase										*
   *    - local vars must begin with lowercase											*
   *    - reserved names: nil, true, false, self, super, and Smalltalk						*
   *																					*
   * Variable scope:																	*
   *    - Global: defined in Dictionary Smalltalk and accessible by all					*
   *         objects in system															*
   *    - Special: (reserved) Smalltalk, super, self, true, false, & nil						*
   *    - Method Temporary: local to a method										*
   *    - Block Temporary: local to a block												*
   *    - Pool: variables in a Dictionary object											*
   *    - Method Parameters: automatic local vars created as a result of 				*
   *         message call with params													*
   *    - Block Parameters: automatic local vars created as a result of					*
   *         value: message call															*
   *    - Class: shared with all instances of one class & its subclasses				*
   *    - Class Instance: unique to each instance of a class							*
   *    - Instance Variables: unique to each instance									*
   ************************************************************************"
  "Comments are enclosed in quotes"
  "Period (.) is the statement seperator"
  
  '!



More information about the Packages mailing list