我目前正在将构建器方法委托给扩展我的一个基类的所有对象.我面临的问题是我需要所有对象来读取自身的属性或传递一个值.
# In Role:
has 'const_string' => (
isa => 'Str',
is => 'ro',
default => 'test',
);
has 'attr' => (
isa => 'Str',
is => 'ro',
builder => '_builder',
);
requires '_builder';
# In extending object - desired 1
sub _builder {
my ($self) = shift;
# $self contains $self->const_string
}
# In extending object - desired 2
sub _builder {
my ($arg1, $arg2) = @_;
# $args can be passed somehow?
}
Run Code Online (Sandbox Code Playgroud)
这是目前可能的还是我将不得不以其他方式做到这一点?
我有一堆自动生成的java代码,我将在scala中调用.目前所有的对象都是使用void setter而不是返回生成的,this这使得当你需要设置一堆值时它真的很烦人(我不会通过初始化所有内容来使用构造函数,因为它有50个字段).例如:
val o = new Obj()
o.setA("a")
o.setB("b")
o.setC("c")
Run Code Online (Sandbox Code Playgroud)
如果我可以做这样的事情真的很酷
val o = with(new Obj()) {
_.setA("a")
_.setB("b")
_.setC("c")
}
Run Code Online (Sandbox Code Playgroud)
我不能使用andhen与anon函数,因为它们需要返回对象.我是坚持当前的方式我正在做的事情还是有一些我不知道的魔法.