mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
doc: document type Fn = fn (string) string (type aliases) (#10471)
This commit is contained in:
32
examples/function_types.v
Normal file
32
examples/function_types.v
Normal file
@@ -0,0 +1,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()
|
||||
}))
|
||||
}
|
||||
Reference in New Issue
Block a user