36 lines
1.3 KiB
Plaintext
36 lines
1.3 KiB
Plaintext
---
|
|
Test
|
|
---
|
|
Shows the usage of a static variable.
|
|
''"Let Over Lambda Over Let Over Lambda"''
|
|
|
|
| script | lisp interpreter fixture |
|
|
| show | evaluate text | !-
|
|
|
|
(let ((direction 'up))
|
|
(defun toggle-counter-direction ()
|
|
(setq direction
|
|
(if (eq direction 'up)
|
|
'down
|
|
'up)))
|
|
|
|
(defun counter-class ()
|
|
(let ((counter 0))
|
|
(lambda ()
|
|
(if (eq direction 'up)
|
|
(setq counter (+ counter 1))
|
|
(setq counter (- counter 1)))))))
|
|
-!|
|
|
| show | evaluate text | (setq my-counter (counter-class)) |
|
|
| check | evaluate text | (funcall my-counter) | 1 |
|
|
| check | evaluate text | (funcall my-counter) | 2 |
|
|
| check | evaluate text | (funcall my-counter) | 3 |
|
|
| show | evaluate text | (toggle-counter-direction) |
|
|
| check | evaluate text | (funcall my-counter) | 2 |
|
|
| check | evaluate text | (funcall my-counter) | 1 |
|
|
| check | evaluate text | (funcall my-counter) | 0 |
|
|
| show | evaluate text | (toggle-counter-direction) |
|
|
| check | evaluate text | (funcall my-counter) | 1 |
|
|
| check | evaluate text | (funcall my-counter) | 2 |
|
|
| check | evaluate text | (funcall my-counter) | 3 |
|