Perl中的 – >和::有什么区别
发布时间:2020-12-15 21:17:18 所属栏目:大数据 来源:网络整理
导读:::和 – 之间的确切区别是什么?在Perl? – 有时工作在::不。 解决方法 ::有两个用途。 它是包名称中的命名空间分隔符 use Foo::Bar; # Load Foo/Bar.pm$Foo::Bar::var # $var in namespace Foo::Bar 附加到一个裸字,它创建一个字符串文字[1]。 以下内容与
::和 – >之间的确切区别是什么?在Perl?
– >有时工作在::不。 解决方法
::有两个用途。
>它是包名称中的命名空间分隔符 use Foo::Bar; # Load Foo/Bar.pm $Foo::Bar::var # $var in namespace Foo::Bar >附加到一个裸字,它创建一个字符串文字[1]。 以下内容与’hello’相同,只是如果包hello不存在则会发出警告: hello:: – >有两个用途。 >它用于解除引用。 $array_ref->[$i] $hash_ref->{$k} $code_ref->(@args) >它在方法调用中用于表示调用者。 CGI->new() # Static method call $cgi->param() # Object method call 你可能会问它们之间有什么区别 Foo::Bar::mysub() 和 Foo::Bar->mysub() 前者是函数调用。后者是方法调用。方法调用就像一个函数调用,有两个不同之处: >方法调用使用继承。 { package Foo::Baz; sub new { my ($class,$arg) = @_; my $self = bless({},$class); $self->{arg} = $arg; return $self; } sub mysub1 { my ($self) = @_; print($self->{arg},"n"); } } { package Foo::Bar; our @ISA = 'Foo::Baz'; sub mysub2 { my ($self) = @_; print(uc($self->{arg}),"n"); } } my $o = Foo::Bar->new('hi'); # Same as: my $o = Foo::Baz::new('Foo::Bar','hi'); $o->mysub1(); # Same as: Foo::Baz::mysub1($o); $o->mysub2(); # Same as: Foo::Bar::mysub2($o); 笔记 > Foo->方法欺骗性地调用名为Foo的子(如果它存在)(使用它作为调用者返回的值)。 Foo :: – >方法,意思是’Foo’ – >方法,不是。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |