blob: fa924cb072da9c94a07d3c434b52880d30f1cd6d (
plain)
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
|
// Function signatures can be declared as types:
type Filter = fn (string) string
// Functions can accept function types as arguments:
fn filter(s string, f Filter) string {
return f(s)
}
// Declare a function with a matching signature:
fn uppercase(s string) string {
return s.to_upper()
}
fn main() {
// A function can be assigned to a matching type:
my_filter := Filter(uppercase)
// You don't strictly need the `Filter` cast - it's only used
// here to illustrate how these types are compatible.
// All of the following prints "HELLO WORLD":
println(filter('Hello world', my_filter))
println(filter('Hello world', uppercase))
println(filter('Hello world', fn (s string) string {
return s.to_upper()
}))
}
|