gpt4 book ai didi

perl - 如何在构建时根据输入创建(或不创建)类实例方法?

转载 作者:行者123 更新时间:2023-12-04 17:36:51 25 4
gpt4 key购买 nike

我将如何创建我的类,以使某些方法仅在将某些值传递给构造函数时才会存在于实例中?

也许更通用的提问方式是:如何向现有的类实例添加方法?

最佳答案

您可以根据标志将匿名子附加到对象:

use strict;
use warnings;
package Object;
sub new {
my $class = shift;
my $self = bless {}, $class;
my %args = @_;
if ($args{method}) {
$self->{method} = sub { print "hello\n" }
}
return $self;
}

sub method {
my $self = shift;
if (not defined $self->{method}) {
warn "Not bound\n";
return;
}
$self->{method}->();
}
1;

使用:
use Object;
my $obj1 = Object->new(method=>1);
$obj1->method();
my $obj2 = Object->new();
$obj2->method();

您可以通过相同的接口(interface)将其扩展到许多方法。

关于perl - 如何在构建时根据输入创建(或不创建)类实例方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16045014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com