Better use of linebreaks

This commit is contained in:
Russell Allen 2014-10-27 22:13:08 +11:00
parent 3c66f47941
commit 9fdfb3f566

View File

@ -83,29 +83,32 @@ Self defines flow control like Smalltalk and Ruby by way of blocks. Blocks are d
Examples of the use of a block: Examples of the use of a block:
``` ```
'hello' copyMutable mapBy: [|:c| c capitalize] "returns 'HELLO'" "returns 'HELLO'"
'hello' copyMutable mapBy: [|:c| c capitalize]
'hello' size > 5 ifTrue: ['Yay'] False: ['Nah'] "returns 'Nah'" "returns 'Nah'"
'hello' size > 5 ifTrue: ['Yay'] False: ['Nah']
"returns 'HaLLO'"
'hello' copyMutable mapBy: [|:c| 'hello' copyMutable mapBy: [|:c|
c = 'e' ifTrue: [c capitalize] c = 'e' ifTrue: [c capitalize]
False: ['a']] False: ['a']]
"returns 'HaLLO'"
``` ```
Multiple expressions are separated by a period. ^ returns immediately. Multiple expressions are separated by a period. ^ returns immediately.
``` ```
"returns An 'E'! How icky!"
'hello' copyMutable mapBy: [|:c. tmp <- ''| 'hello' copyMutable mapBy: [|:c. tmp <- ''|
tmp: c capitalize. tmp: c capitalize.
tmp = 'E' ifTrue: [^ 'An \'E\'! How icky!']. tmp = 'E' ifTrue: [^ 'An \'E\'! How icky!'].
c capitalize c capitalize
] ]
"returns An 'E'! How icky!"
``` ```
Blocks are performed by sending them the message 'value' and inherit (delegate to) their contexts: Blocks are performed by sending them the message 'value' and inherit (delegate to) their contexts:
``` ```
"returns 0"
[|x| [|x|
x: 15. x: 15.
"Repeatedly sends 'value' to the first block while the result of sending 'value' to the "Repeatedly sends 'value' to the first block while the result of sending 'value' to the
@ -113,7 +116,6 @@ Blocks are performed by sending them the message 'value' and inherit (delegate t
[x > 0] whileTrue: [x: x - 1]. [x > 0] whileTrue: [x: x - 1].
x x
] value ] value
"returns 0"
``` ```
# Methods # Methods
@ -121,14 +123,16 @@ Blocks are performed by sending them the message 'value' and inherit (delegate t
Methods are like blocks but are not within a context but are the values of slots. Unlike Smalltalk, methods by default return their final value not 'self'. Methods are like blocks but are not within a context but are the values of slots. Unlike Smalltalk, methods by default return their final value not 'self'.
``` ```
"Here is an object with one assignable slot 'x' and a method 'reduceXTo: y'" "Here is an object with one assignable slot 'x' and a method 'reduceXTo: y'.
Sending the message 'reduceXTo: 10' to this object will put
the object '10' in the 'x' slot and return the original object"
(| (|
x <- 50. x <- 50.
reduceXTo: y = ( reduceXTo: y = (
[x > y] whileTrue: [x: x - 1]. [x > y] whileTrue: [x: x - 1].
self) self)
|) |)
"Sending the message 'reduceXTo: 10' to this object will put the object '10' in the 'x' slot and return the original object" .
``` ```
# Prototypes # Prototypes