2022-08-17 17:31:15 +02:00
|
|
|
# Tests closures
|
2022-11-02 12:03:14 +01:00
|
|
|
import std;
|
|
|
|
|
|
|
|
|
|
|
|
fn makeClosure(x: int): fn: int {
|
|
|
|
fn inner: int {
|
|
|
|
return x;
|
|
|
|
}
|
|
|
|
return inner;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fn makeClosureTwo(y: int): fn: int {
|
2022-10-24 13:53:27 +02:00
|
|
|
fn inner: int {
|
2022-11-02 12:03:14 +01:00
|
|
|
return y;
|
2022-07-09 16:25:19 +02:00
|
|
|
}
|
|
|
|
return inner;
|
2022-05-29 14:52:47 +02:00
|
|
|
}
|
|
|
|
|
2022-08-30 12:55:14 +02:00
|
|
|
|
2022-11-23 01:02:35 +01:00
|
|
|
# These should all print true!
|
2022-11-02 12:03:14 +01:00
|
|
|
var closure = makeClosure(42);
|
2022-11-23 01:02:35 +01:00
|
|
|
print(closure() == 42);
|
|
|
|
print(makeClosureTwo(38)() == 38);
|
2022-11-02 12:03:14 +01:00
|
|
|
var closureTwo = makeClosureTwo(420);
|
2022-11-23 01:02:35 +01:00
|
|
|
print(closureTwo() == 420);
|