gpt4 book ai didi

perl - Perl 中的 sub _init 解释

转载 作者:行者123 更新时间:2023-12-04 17:50:02 26 4
gpt4 key购买 nike

我想知道这个子程序在 Perl 中做了什么。我相信我有大致的想法,但我想知道一些语法。

sub _init 
{
my $self = shift;
if (@_) {
my %extra = @_;
@$self{keys %extra} = values %extra;
}
}

这是我认为它所做的:基本上将任何“额外”键值对添加到变量 $self 引用的无名哈希中。我也不是 100% 确定这一点,但我认为 my $self = shift实际上是指变量 $self那个叫 _init()子程序。

我的具体问题是:
  • $self 实际上是指调用子程序_init() 的变量吗? ?
  • @$ 有什么用写作时的语法意思@$self{keys %extra} = values %extra;
  • 最佳答案

    Is $self actually referring to the variable that called the subroutine _init()?



    变量不调用子程序。

    调用者(在 ->->_init() 左侧的内容)作为其第一个参数传递给方法,您将其放入 $self . ( shift()shift(@_) 在 subs 中的缩写。)

    What does the @$ syntax mean when writing @$self{keys %extra} = values %extra;


    @hash{LIST}hash slice .
    @{ EXPR }{LIST}是一个散列切片,其中要切片的散列是通过引用指定的。当 EXPR 时, curl 是可选的是简单的标量查找,所以 @{ $hash_ref }{LIST}可以写成 @$hash_ref{LIST} .

    该方法将参数添加到 %$self ,用作调用者的基于哈希的对象。也可以这样写:
    %$self = ( %$self, @_ );

    关于perl - Perl 中的 sub _init 解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18878518/

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