加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 为什么不’|’超负荷?

发布时间:2020-12-15 23:29:07 所属栏目:大数据 来源:网络整理
导读:以下代码无法按预期方式工作.我错过了什么? use strict;use warnings;use overload '|' = sub { 1 / ( 1 / $_[0] + 1 / $_[1] ) };print( 5 | 5 ); # Prints '5' instead of '2.5' 解决方法 过载仅适用于有福的引用(“对象”). package MyNumber;use strict
以下代码无法按预期方式工作.我错过了什么?

use strict;
use warnings;
use overload '|' => sub { 1 / ( 1 / $_[0] + 1 / $_[1] ) };

print( 5 | 5 ); # Prints '5' instead of '2.5'

解决方法

过载仅适用于有福的引用(“对象”).

package MyNumber;
use strict;
use warnings;
use overload '|' => sub { 1 / ( 1 / +$_[0] + 1 / +$_[1] ) },'0+' => sub { $_[0]->{value} },# Cast to number
            fallback => 1;                  # Allow fallback conversions

# "Constructor",bless number as MyNumber
sub num {
    my $self = { value => $_[0] };  # can be any reference
    return bless $self,"MyNumber";
}

print(num(5) | num(5));


my $a = num(5);
print ($a | 5); # This works too

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读