diff options
Diffstat (limited to 'smalltalk.html.markdown')
-rw-r--r-- | smalltalk.html.markdown | 71 |
1 files changed, 38 insertions, 33 deletions
diff --git a/smalltalk.html.markdown b/smalltalk.html.markdown index cc7ab84c..d9edbf06 100644 --- a/smalltalk.html.markdown +++ b/smalltalk.html.markdown @@ -1,5 +1,6 @@ --- language: smalltalk +filename: smalltalk.st contributors: - ["Jigyasa Grover", "https://github.com/jig08"] --- @@ -10,22 +11,22 @@ contributors: Feedback highly appreciated! Reach me at [@jigyasa_grover](https://twitter.com/jigyasa_grover) or send me an e-mail at `grover.jigyasa1@gmail.com`. - -##Allowable characters: +## Allowable characters: - a-z - A-Z - 0-9 - .+/\*~<>@%|&? - blank, tab, cr, ff, lf -##Variables: +## 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` +## 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 @@ -53,7 +54,7 @@ Transcript cr. "carriage return / l Transcript endEntry. "flush the output buffer" ``` -##Assignment: +## Assignment: ``` | x y | x _ 4. "assignment (Squeak) <-" @@ -72,7 +73,7 @@ y := x deepCopy. "copy object and ins y := x veryDeepCopy. "complete tree copy using a dictionary" ``` -##Constants: +## Constants: ``` | b | b := true. "true constant" @@ -90,7 +91,6 @@ x := $ . "character constant x := #aSymbol. "symbol constants" x := #(3 2 1). "array constants" x := #('abc' 2 $a). "mixing of types allowed" - ``` ## Booleans: @@ -129,7 +129,6 @@ b := x isFloat. "test if object is f b := x isNumber. "test if object is number" b := $A isUppercase. "test if upper case character" b := $A isLowercase. "test if lower case character" - ``` ## Arithmetic expressions: @@ -185,12 +184,11 @@ 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 := Random new next; yourself. x next. "random number stream (0.0 to 1.0)" x := 100 atRandom. "quick random number" - ``` -##Bitwise Manipulation: +## Bitwise Manipulation: ``` | b x | x := 16rFF bitAnd: 16r0F. "and bits" @@ -204,7 +202,6 @@ x := 16r80 highbit. "position of highest 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" - ``` ## Conversion: @@ -220,7 +217,6 @@ x := 3.99 storeString. "convert object to s x := 15 radix: 16. "convert to string in given base" x := 15 printStringBase: 16. x := 15 storeStringBase: 16. - ``` ## Blocks: @@ -244,7 +240,8 @@ Transcript show: (x value: 'First' value: 'Second'); cr. "use block with argu ## Method calls: - unary methods are messages with no arguments - binary methods -- keyword methods are messages with selectors including colons standard categories/protocols: - initialize-release (methods called for new instance) +- keyword methods are messages with selectors including colons standard categories/protocols: +- initialize-release (methods called for new instance) - accessing (get/set methods) - testing (boolean tests - is) - comparing (boolean tests with parameter @@ -253,6 +250,7 @@ Transcript show: (x value: 'First' value: 'Second'); cr. "use block with argu - updating (receive notification of changes) - private (methods private to class) - instance-creation (class methods for creating instance) + ``` | x | x := 2 sqrt. "unary message" @@ -267,7 +265,7 @@ Transcript "Cascading - send mu x := 3 + 2; * 100. "result=300. Sends message to same receiver (3)" ``` -##Conditional Statements: +## Conditional Statements: ``` | x | x > 10 ifTrue: [Transcript show: 'ifTrue'; cr]. "if then" @@ -329,7 +327,6 @@ y := x asciiValue. "convert to numeric y := x asString. "convert to string" b := $A <= $B. "comparison" y := $A max: $B. - ``` ## Symbol: @@ -384,7 +381,9 @@ y := x asSet. "convert string to s y := x shuffled. "randomly shuffle string" ``` -## Array: Fixed length collection +## Array: +Fixed length collection + - ByteArray: Array limited to byte elements (0-255) - WordArray: Array limited to word elements (0-2^32) @@ -427,7 +426,9 @@ y := x asBag. "convert to bag coll y := x asSet. "convert to set collection" ``` -##OrderedCollection: acts like an expandable array +## OrderedCollection: +acts like an expandable array + ``` | b x y sum max | x := OrderedCollection with: 4 with: 3 with: 2 with: 1. "create collection with up to 4 elements" @@ -470,7 +471,9 @@ y := x asBag. "convert to bag coll y := x asSet. "convert to set collection" ``` -## SortedCollection: like OrderedCollection except order of elements determined by sorting criteria +## SortedCollection: +like OrderedCollection except order of elements determined by sorting criteria + ``` | b x y sum max | x := SortedCollection with: 4 with: 3 with: 2 with: 1. "create collection with up to 4 elements" @@ -512,7 +515,9 @@ y := x asBag. "convert to bag coll y := x asSet. "convert to set collection" ``` -## Bag: like OrderedCollection except elements are in no particular order +## 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" @@ -543,8 +548,12 @@ y := x asBag. "convert to bag coll y := x asSet. "convert to set collection" ``` -## Set: like Bag except duplicates not allowed -## IdentitySet: uses identity test (== rather than =) +## Set: +like Bag except duplicates not allowed + +## IdentitySet: +uses identity test (== rather than =) + ``` | b x y sum max | x := Set with: 4 with: 3 with: 2 with: 1. "create collection with up to 4 elements" @@ -603,7 +612,7 @@ y := x asBag. "convert to bag coll y := x asSet. "convert to set collection" ``` -##Associations: +## Associations: ``` | x y | x := #myVar->'hello'. @@ -611,8 +620,9 @@ y := x key. y := x value. ``` -## Dictionary: -## IdentityDictionary: uses identity test (== rather than =) +## IdentityDictionary: +uses identity test (== rather than =) + ``` | b x y | x := Dictionary new. "allocate collection" @@ -903,11 +913,11 @@ b := String isVariable. "true if has indexed b := String isPointers. "true if index instance vars contain objects" b := String isBits. "true if index instance vars contain bytes/words" b := String isBytes. "true if index instance vars contain bytes" -b := String isWords. true if index instance vars contain words" +b := String isWords. "true if index instance vars contain words" Object withAllSubclasses size. "get total number of class entries" ``` -## Debuging: +## Debugging: ``` | a b x | x yourself. "returns receiver" @@ -938,13 +948,8 @@ x := FillInTheBlank request: 'Prompt Me'. "prompt user for inp Utilities openCommandKeyHelp ``` - - - ## Ready For More? -### Free Online - * [GNU Smalltalk User's Guide](https://www.gnu.org/software/smalltalk/manual/html_node/Tutorial.html) * [smalltalk dot org](http://www.smalltalk.org/) * [Computer Programming using GNU Smalltalk](http://www.canol.info/books/computer_programming_using_gnu_smalltalk/) |