什么是转移 - > {o} = $ o; 在Perl做什么?

Bar*_*ajz 4 perl

子程序中的这一行是什么意思?

shift->{o} = $o;
Run Code Online (Sandbox Code Playgroud)

我知道通常会采取什么样的转变,但是在这种情况下,不要用破折号和箭头来理解它.

ike*_*ami 10

在子/方法内,

shift
Run Code Online (Sandbox Code Playgroud)

是的缩写

shift(@_)
Run Code Online (Sandbox Code Playgroud)

子调用将参数放入@_.方法调用的作用相同,但在参数之前使用了调用者.

如果它位于一个名为sub的子类中,它将分配$oo第一个参数引用的哈希元素.

如果这是在作为方法调用的子类中,则它将分配$o给调用者o引用的哈希元素.实际上,这会设置o调用此方法的对象的属性.

在此过程中,shift删除引用@_,但我怀疑可能没有任何后果.


yst*_*sth 4

将移位的值解释为哈希引用,并为该哈希中的“o”键分配一个值。