perl – 如何在Moose中自动生成绑定到网络服务的一堆settergetter?

perl – 如何在Moose中自动生成绑定到网络服务的一堆settergetter?,第1张

概述通过自己教导Moose,我正在研究一个与特定硬件接口的Moose对象.所述硬件采用了许多不同的命令来设置硬件的各种属性,所有形式的PROPERTYNAME = VALUE用于setter,以及PROPERTYNAME?对于getter(请注意,这些’setter’和’getters’位于硬件的网络接口上).我想要做的是创建一个对象,其中硬件的所有这些属性都使用类似属性的接口实现.由于获取和设置各种 通过自己教导Moose,我正在研究一个与特定硬件接口的Moose对象.所述硬件采用了许多不同的命令来设置硬件的各种属性,所有形式的PROPERTYname = VALUE用于setter,以及PROPERTYname?对于getter(请注意,这些’setter’和’getters’位于硬件的网络接口上).我想要做的是创建一个对象,其中硬件的所有这些属性都使用类似属性的接口实现.由于获取和设置各种属性对于所有属性采用相同的形式,是否有办法从这些属性的列表中自动生成setter和getter?

I.E.:而不是:

Package MyHarDWare;use Moose;has property1 => (    'is' => 'rw','reader' => 'set_property1','writer' => 'get_property1',);has property2 => (    'is' => 'rw','reader' => 'set_property2','writer' => 'get_property2',);# ...has propertyN => (    'is' => 'rw','reader' => 'set_propertyN','writer' => 'get_propertyN',);

有什么我可以这样做:

Package MyHarDWare;use Moose;attributes => (    'is' => 'rw','names' => [qw/property1 property2 ... propertyN/],'reader' => sub {        my $self = shift;        my $property = shift;        return $self->_send_command("$property?");    },'writer' => sub {        my $self = shift;        my $property = shift;        my $value = shift;        return $self->_send_command("$property=$value");    },);

编辑:这就是我想要发生的事情:

# CALLER:my $hw = MyHarDWare->new();$hw->property1('foo');print $hw->property2 . "\n";

而“引擎盖下”:

$hw->property1('foo');# Becomes sub { return $hw->_send_command('property1=foo'); }# And$hw->property2();# Becomessub { return $hw->_send_command('property2?'); }
解决方法 循环遍历属性怎么样?

use strict;use warnings;use Moose;foreach my $prop ( qw( property1 property2 property3 property4 ) ) {     has $prop => (        is => 'rw',isa => 'Str',reader => "get_$prop",writer => "set_$prop",);  }1;
总结

以上是内存溢出为你收集整理的perl – 如何在Moose中自动生成绑定网络服务的一堆setter / getter?全部内容,希望文章能够帮你解决perl – 如何在Moose中自动生成绑定到网络服务的一堆setter / getter?所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/langs/1266497.html

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

发表评论

登录后才能评论

评论列表(0条)

保存