perl – 重写对象属性 – 使用Moose的最佳方法吗?

perl – 重写对象属性 – 使用Moose的最佳方法吗?,第1张

概述让我们看看SO问题输入机器人预测,显然是基于问题标题发布的,是否会实现: The question you’re asking appears subjective and is likely to be closed. 使用Perl / Moose,我想弥合商家文章代表的两种方式之间的不匹配.让文章有名称,数量和价格.表示的第一种方式是将数量设置为任何数值,包括十进制值,因此您可以使用3.5米的 @H_419_4@ 让我们看看SO问题输入机器人预测,显然是基于问题标题发布的,是否会实现:

The question you’re asking appears subjective and is likely to be closed.

使用Perl / Moose,我想弥合商家文章代表的两种方式之间的不匹配.让文章有名称,数量和价格.表示的第一种方式是将数量设置为任何数值,包括十进制值,因此您可以使用3.5米的绳索或电缆.第二个,我必须与之接口,唉,不灵活,并且需要数量为整数.因此,我必须重写我的对象以将数量设置为1并在名称中包含实际数量. (是的,这是一个黑客,但我想保持这个例子简单.)

所以这里的故事是一个财产的价值影响其他财产的价值.

这是工作代码:

#!perlpackage Article;use Moose;has name        => is => 'rw',isa => 'Str',required => 1;has quantity    => is => 'rw',isa => 'Num',required => 1;has price       => is => 'rw',required => 1;around BUILDARGS => sub {    my $orig = shift;    my $class = shift;    my %args = @_ == 1 ? %{$_[0]} : @_;    my $q = $args{quantity};    if ( $q != int $q ) {        $args{name}    .= " ($q)";        $args{price}   *= $q;        $args{quantity} = 1;    }    return $class->$orig( %args );};sub itemprice { $_[0]->quantity * $_[0]->price }sub as_string {    return sprintf '%2u * %-40s (%7.2f) %8.2f',map $_[0]->$_,qw/quantity name price itemprice/;}package main;use Test::More;my $table = Article->new({ name => 'table',quantity => 1,price => 199 });is $table->itemprice,199,$table->as_string;my $chairs = Article->new( name => 'Chair',quantity => 4,price => 45.50 );is $chairs->itemprice,182,$chairs->as_string;my $rope = Article->new( name => 'Rope',quantity => 3.5,price => 2.80 );is $rope->itemprice,9.80,$rope->as_string;is $rope->quantity,1,'quantity set to 1';is $rope->name,'Rope (3.5)','name includes original quantity';done_testing;

然而,我想知道在穆斯是否有更好的成语.但也许我的问题都是主观的,值得快速结束. 总结

以上是内存溢出为你收集整理的perl – 重写对象属性 – 使用Moose的最佳方法吗?全部内容,希望文章能够帮你解决perl – 重写对象属性 – 使用Moose的最佳方法吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1239292.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存