diff options
Diffstat (limited to 'v_windows/v/examples/function_types.v')
-rw-r--r-- | v_windows/v/examples/function_types.v | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/v_windows/v/examples/function_types.v b/v_windows/v/examples/function_types.v new file mode 100644 index 0000000..fa924cb --- /dev/null +++ b/v_windows/v/examples/function_types.v @@ -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() + })) +} |