gpt4 book ai didi

Perl 的 map 函数与 OO perl

转载 作者:行者123 更新时间:2023-12-02 05:38:47 26 4
gpt4 key购买 nike

在 Perl 对象的方法中,我想调用变量列表中的另一个方法。像这样使用 map 是行不通的:

($open, $high, $low, $close) 
= map( $self->adjust_for_factor, ($open, $high, $low, $close) );

....

sub adjust_for_factor {
my $self = shift;
my $price = shift;

return $price * $self->get_factor ;
}

这是有效的,但是它很丑而且不能扩展。我确定一定可以在这里使用 map :

($open, $high, $low, $close) 
= ( $self->adjust_for_factor($open)
, $self->adjust_for_factor($high)
, $self->adjust_for_factor($low)
, $self->adjust_for_factor($close) );

我想这是一个以正确的方式引用 self 的问题。我无法概念化它们是如何组合在一起的。

感谢所有花时间考虑/留下反馈的人。

最佳答案

正如@tchrist 所说,您忘记将 $_ 传递给您的方法。正确的方法是

($open, $high, $low, $close)    
= map $self->adjust_for_factor($_), $open, $high, $low, $close;

您还可以修改该方法,使其可以接受一个列表:

sub adjust_for_factor {
my ($self, @prices) = @_;

return map $_ * $self->get_factor, @prices;
}

($open, $high, $low, $close)
= $self->adjust_for_factor($open, $high, $low, $close);

关于Perl 的 map 函数与 OO perl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7161304/

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