在使用Perl的Class :: Struct构建对象时,如何引用该对象?
发布时间:2020-12-16 06:20:13 所属栏目:大数据 来源:网络整理
导读:我是面向对象Perl的新手,我必须在同一个对象的另一个子程序中访问同一个对象的成员变量.示例代码在这里: use Class::Struct;struct Breed ={ name = '$',cross = '$',};struct Cat =[ name = '$',kittens = '@',markings = '%',breed = 'Breed',breed2 = '$
我是面向对象Perl的新手,我必须在同一个对象的另一个子程序中访问同一个对象的成员变量.示例代码在这里:
use Class::Struct; struct Breed => { name => '$',cross => '$',}; struct Cat => [ name => '$',kittens => '@',markings => '%',breed => 'Breed',breed2 => '$',]; my $cat = Cat->new( name => 'Socks',kittens => ['Monica','Kenneth'],markings => { socks=>1,blaze=>"white" },breed => { name=>'short-hair',cross=>1 },** //breed2 => sub { return $cat->breed->name;}** ); print "Once a cat called ",$cat->name,"n"; **print "(which was a ",$cat->breed->name,")n";** print "had two kittens: ",join(' and ',@{$cat->kittens}),"n"; 但我不知道如何在breed2的子程序中使用$cat-> breed->名称?有人可以帮我弄这个吗. 解决方法
品种2中的问题是您正在尝试引用尚未定义的变量.它看起来是相同的名称,但它不是您正在创建的对象.这有点像鸡蛋问题.
我不太确定你想要一个像那个插槽那样的匿名子程序.你是 my $cat = Cat->new( name => 'Socks',breed2 => undef,); $cat->breed2( sub { $cat->breed->name } ); print "Once a cat called ","n"; print "(which was a ",$cat->breed2->(),")n"; print "had two kittens: ","n"; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |