Advertisement
Guest User

Moose & Perl 6

a guest
Jan 5th, 2016
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.09 KB | None | 0 0
  1. #!/usr/bin/env perl
  2.  
  3. use strict;
  4. use warnings;
  5.  
  6. package Planet {
  7.     use Moose;
  8.     use Math::Trig;
  9.  
  10.     has name   => (is => 'ro');
  11.     has mass   => (is => 'ro', isa => 'Num');
  12.     has radius => (is => 'ro', isa => 'Num');
  13.  
  14.     use overload '""' => sub { shift->name };
  15.  
  16.     sub density {
  17.         my $self = shift;
  18.         my $volume = 4 / 3 * pi * ($self->radius ** 3);
  19.         return $self->mass / $volume;
  20.     }
  21. }
  22.  
  23. my $planet = Planet->new(
  24.     name   => 'Jupiter',
  25.     mass   => 1.898E27,
  26.     radius => 6.9911E7,
  27. );
  28.  
  29. printf "The density of $planet is %.0f (kg/m³)\n", $planet->density;
  30.  
  31.  
  32.  
  33.  
  34. #!/usr/bin/env perl6
  35.  
  36. class Planet {
  37.     has Str $.name   is required;
  38.     has Num $.mass   is required;
  39.     has Num $.radius is required;
  40.    
  41.     method Str { $.name; }
  42.    
  43.     method density {
  44.         my Num $volume = 4 ÷ 3 × π × $.radius³;
  45.         return $.mass ÷ $volume;
  46.     }
  47. }
  48.  
  49. my $planet = Planet.new(
  50.     name   => 'Jupiter',
  51.     mass   => 1.898E27,
  52.     radius => 6.9911E7,
  53. );
  54.  
  55. say "The density of $planet is { $planet.density.round } (kg/m³)";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement