# [[[ HEADER ]]] use RPerl; package MyClass03MediumRPerl; use strict; use warnings; our $VERSION = 0.001_000; # [[[ OO INHERITANCE ]]] use parent qw(RPerl::CompileUnit::Module::Class); use RPerl::CompileUnit::Module::Class; # [[[ CRITICS ]]] ## no critic qw(ProhibitUselessNoCritic ProhibitMagicNumbers RequireCheckedSyscalls) # USER DEFAULT 1: allow numeric values & print operator ## no critic qw(RequireInterpolationOfMetachars) # USER DEFAULT 2: allow single-quoted control characters & sigils ## no critic qw(ProhibitMultiplePackages ProhibitReusedNames ProhibitPackageVars) # USER DEFAULT 8: allow additional packages # [[[ OO PROPERTIES ]]] our hashref $properties = { bar => my integer $TYPED_bar = 23 }; # [[[ SUBROUTINES & OO METHODS ]]] sub double_bar_save { { my void::method $RETURN_TYPE }; ( my MyClass03MediumRPerl $self ) = @ARG; # single argument in, multiple argument English syntax $self->{bar} = $self->{bar} * 2; } sub double_bar_return { { my integer::method $RETURN_TYPE }; my MyClass03MediumRPerl $self = shift @ARG; # single argument in, single argument English syntax return $self->{bar} * 2; } 1; # end of class # [[[ HEADER ]]] use RPerl; package MySubclass03MediumRPerl; use strict; use warnings; our $VERSION = 0.001_000; # [[[ OO INHERITANCE ]]] use parent qw(MyClass03MediumRPerl); use MyClass03MediumRPerl; # [[[ CRITICS ]]] ## no critic qw(ProhibitUselessNoCritic ProhibitMagicNumbers RequireCheckedSyscalls) # USER DEFAULT 1: allow numeric values & print operator ## no critic qw(RequireInterpolationOfMetachars) # USER DEFAULT 2: allow single-quoted control characters & sigils ## no critic qw(ProhibitMultiplePackages ProhibitReusedNames ProhibitPackageVars) # USER DEFAULT 8: allow additional packages # [[[ OO PROPERTIES ]]] our hashref $properties = { bax => my integer $TYPED_bax = 123 }; # NEED FIX: bax should be readonly, need to change into a constant??? # [[[ SUBROUTINES & OO METHODS ]]] sub triple_bax_save { { my void::method $RETURN_TYPE }; my MySubclass03MediumRPerl $self = shift @_; # single argument in, single argument punctuation syntax $self->{bax} = $self->{bax} * 3; } sub triple_bax_return { { my integer::method $RETURN_TYPE }; my MySubclass03MediumRPerl $self = shift; # single argument in, single argument hidden syntax return $self->{bax} * 3; } sub add_bax_return { { my integer::method $RETURN_TYPE }; ( my MySubclass03MediumRPerl $self, my integer $addend ) = @ARG; # multiple arguments in, multiple argument English syntax if ( $addend < 10 ) { return $self->{bax} + $addend; } return $self->{bax} + 3; } sub subtract_bax_return { { my integer::method $RETURN_TYPE }; ( my MySubclass03MediumRPerl $self, my integer $subtrahend ) = @_; # multiple arguments in, multiple argument punctuation syntax if ( $subtrahend < 10 ) { return $self->{bax} - $subtrahend; } return $self->{bax} - 3; } sub multiply_bax_return { { my integer::method $RETURN_TYPE }; my MySubclass03MediumRPerl $self = shift @ARG; # multiple arguments in, single argument English syntax my integer $multiplier = shift @_; # multiple arguments in, single argument punctuation syntax if ( $multiplier < 10 ) { return $self->{bax} * $multiplier; } return $self->{bax} * 3; } sub multiply_multiply_bax_return { { my integer::method $RETURN_TYPE }; my MySubclass03MediumRPerl $self = shift @ARG; # multiple arguments in, single argument English syntax my integer $multiplier = shift @_; # multiple arguments in, single argument punctuation syntax my integer $multiplier2 = shift; # multiple arguments in, single argument hidden syntax if ( $multiplier < 10 ) { return $self->{bax} * $multiplier * $multiplier2; } return $self->{bax} * 3 * $multiplier2; } 1; # end of subclass