perl – 为什么变量仍然绑定
发布时间:2020-12-15 23:22:38 所属栏目:大数据 来源:网络整理
导读:运行: $t = 3;{ tie $t,'Yep';} # Expect $t to become untied here.print $t;package Yep;sub TIESCALAR { bless {},'Yep';}sub UNTIE { print "UNTIEn";}sub DESTROY { print "DESTROYn";} 输出是: Can't locate object method "FETCH" via package "Y
运行:
$t = 3; { tie $t,'Yep'; } # Expect $t to become untied here. print $t; package Yep; sub TIESCALAR { bless {},'Yep'; } sub UNTIE { print "UNTIEn"; } sub DESTROY { print "DESTROYn"; } 输出是: Can't locate object method "FETCH" via package "Yep" at a.pl line 5. DESTROY EXPECTED输出是: DESTROY 3 我想仅在tie所在的作用域的持续时间内绑定变量$t.超出范围,它必须与tie之前的行为相同.因此,我将绑定绑定到块中,并期望在到达块结束时调用解开(就像’local’,其中值在块结束时恢复,但对于绑定变量,我期望行为恢复(解开$t) )).注意$t还没有超出范围. 解决方法
至于全新的问题,
在进行这些更改的范围时,不会自动撤消对变量的更改 my $t = 3; { $t = 4; } print "$tn"; # 4,not 3. 当改变是添加领带魔法时也是如此.您可以使用解开来移除魔法,但最好只使用新变量. my $t = 3; { tie my $t,'Yep'; } # Tied variable destroyed here. print "$tn"; # 3. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |