File: scope.st

package info (click to toggle)
steptalk 0.10.0%2Bgit20200629-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,732 kB
  • sloc: objc: 12,182; yacc: 400; makefile: 40; sh: 34; csh: 4; awk: 3; lisp: 3
file content (63 lines) | stat: -rw-r--r-- 1,161 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
" Variable scope example 

    try to run:
    
    > stexec scope.st , scope.st
    
"

[| :global

main
    | local |
    
    Transcript showLine: ':: Start'.

    (extern isNil) ifTrue: 
    [
        Transcript showLine: 'Script was run for first time. Setting extern.'.
        extern := 100.
    ]
    ifFalse:
    [
        Transcript showLine: 'Extern: ', (extern stringValue).
    ].
    
    local := 10.
    Transcript showLine: 'Local: ', (local stringValue).

    self setLocal:20.
    Transcript showLine: 'Local after call: ', (local stringValue),
                         ' (has to be 10 not 20)'.

    global := 10.
    Transcript showLine: 'Global: ', (global stringValue).

    self setGlobal:20.
    Transcript showLine: 'Global after call 1: ', (global stringValue),
                         ' (has to be 20 not 10)'.

    self testGlobal.
    Transcript showLine: 'Global after call 2: ', (global stringValue),
                         ' (has to be 20 not 0)'.

    ^nil
!

setLocal:val
    | local |
    local := val.
    ^self
!

setGlobal:val
    global := val.
    ^self
!
    
testGlobal
    | global |
    global := 0.
    ^self

]