C и C++ используют отличающийся правила искажения имени . По существу экстерн "C" говорит компилятору C++ называть функцию, как C назвал бы его.
Проверить документация Moose Types . Встроенного типа с плавающей запятой нет, только Num
и его подтип Int
. В этом есть смысл, поскольку Perl на самом деле не различает (явно) между числами с плавающей запятой и целыми числами.
Лучше всего, вероятно, использовать Num
в качестве ограничения типа или написать свой собственный тип, который приводит к значение в той форме, которая соответствует вашим потребностям.
Вам потребуется тип Num для действительного числа:
{
package Problem;
use Moose;
has 'number' => (
isa => 'Num',
is => 'ro',
default => sub { 0.1 },
);
}
my $problem = Problem->new;
say $problem->number; # => 0.1