4 ms·
sure... role Fish { has Str $.name } class Starfish does Fish { has Str $.favourite-colour; } class Jellyfish does Fish { has Bool $.jiggly } sub ha
by librasteve 9mo ago
sure...
role Fish { has Str $.name }
class Starfish does Fish { has Str $.favourite-colour; }
class Jellyfish does Fish { has Bool $.jiggly }
sub handle-fish(Fish $fish) {
given $fish {
when Starfish { say .favourite-colour }
when Jellyfish { say .name }
}
}
handle-fish Starfish.new: :name("Lucy"), :favourite-colour("Pink");
I would probably reach for multi-dispatch...
role Fish { has Str $.name }
class Starfish does Fish { has Str $.favourite-colour; }
class Jellyfish does Fish { has Bool $.jiggly }
multi sub handle-fish(Starfish $fish) { say $fish.favourite-colour }
multi sub handle-fish(Jellyfish $fish) { say $fish.name }
handle-fish Starfish.new: :name("Lucy"), :favourite-colour("Pink");
- librasteve 9mo agoHere's the other Gleam concurrency example in Raku for good measure: my @promises; sub MAIN() { # Run loads of green threads, no problem for ^200_000 { spawn-greeter($++); } await Promise.allof(@promises); } sub spawn-greeter($i) { @promises.push: start { say "Hello from $i"; } }
- tasuki 9mo agoAgain, thanks!
- tasuki 9mo agoThat doesn't look half bad - thank you!