diff options
-rw-r--r-- | perl6.html.markdown | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/perl6.html.markdown b/perl6.html.markdown index ee94f5bf..d0ccdc9a 100644 --- a/perl6.html.markdown +++ b/perl6.html.markdown @@ -118,13 +118,38 @@ say %hash<key2>; # If it's a string, you can actually use <> # created with the `sub` keyword. sub say-hello { say "Hello, world" } -sub say-hello-to(Str $name) { # You can provide the type of an argument - # and it'll be checked at compile-time. - +# You can provide (typed) arguments. +# If specified, the type will be checked at compile-time if possible, +# otherwise at runtime. +sub say-hello-to(Str $name) { say "Hello, $name !"; } -## It can also have optional arguments: +# A sub returns the last value of the block. +sub return-value { + 5; +} +say return-value; # prints 5 +sub return-empty { +} +say return-empty; # prints Nil + +# Some control flow structures produce a value, like if: +sub return-if { + if True { + "Truthy"; + } +} +say return-if; # prints Truthy + +# Some don't, like for: +sub return-for { + for 1, 2, 3 { } +} +say return-for; # prints Nil + + +## A sub can have optional arguments: sub with-optional($arg?) { # the "?" marks the argument optional say "I might return `(Any)` (Perl's 'null'-like value) if I don't have an argument passed, or I'll return my argument"; |