7
A
回答
22
號的- >的操作裝置調用的參考(在這種情況下,一個對象引用),它會尋找SUPER方法,不超基類。
下面是代碼來顯示它:
#!/usr/bin/perl -w
package MyOBJ;
use strict;
use warnings;
use Data::Dumper;
sub new {
my ($class) = @_;
my $self = {};
bless $self, $class;
return $self;
}
sub promote {
my ($self) = @_;
print Dumper($self);
}
1;
package MyOBJ::Sub;
use strict;
use warnings;
use base 'MyOBJ';
1;
use strict;
use warnings;
my $obj = MyOBJ::Sub->new();
$obj->SUPER::promote();
運行它,你會得到:
$VAR1 = bless({}, 'MyOBJ::Sub');
當您更改最後一行用- >代替::你會得到:
Can't locate object method "SUPER" via package "MyOBJ" at test.pl line 45.
從t他 「的perldoc perlop得到」 手冊
箭頭操作符
如果右側或者是 「[...]」, 「{...}」,或「(...) 「下標,那麼左側必須是分別對數組,哈希或子例程的硬引用或符號引用。
否則,右側是一個方法名稱或一個包含方法名稱或子例程引用的簡單標量變量,左側必須是對象(有福的引用)或類名(也就是說,一個包名稱)
由於左側既不是對象ref也不是類名(SUPER是多義性定義的裸語),所以它被視爲一個不存在的方法,因此是錯誤。
+0
爲什麼在使用' - >'時會查找方法,原因是什麼? –
+0
我附加了一些更多的信息給我的答案,從perl手冊複製。希望進一步爲你解釋。 –
相關問題
- 1. 對於(1)總是和perl一樣嗎?
- 2. 這個Perl語句是什麼意思?
- 3. 這是if語句嗎?
- 4. 總結兩個總結語句
- 5. 這兩種方法是一樣的嗎?
- 6. 這兩個if語句是否相同?
- 7. 這兩個SQL語句是否相同?
- 8. 我可以在OneLiner中轉換這兩個LINQ語句嗎(C#)
- 9. 單個sql語句在innodb中總是原子嗎?
- 10. 這兩個查詢都一樣嗎?
- 11. 鏈接兩個JFrames,這樣一個將總是精確地在另一個
- 12. 是嗎?如果是這樣,爲什麼這兩個常規語法不同呢?
- 13. 這兩個語句在Ruby中是否需要相同的語句?
- 14. 多次或總是使用第一個語句的語句
- 15. 如何在一個switch語句中合併兩個case語句
- 16. 在一條語句而不是兩條SQL語句中更新
- 17. 詢問一個值是否與另一個值不一樣,並且在if語句中總是回答true
- 18. 在SQLite3中,這個select語句會從兩個索引中獲益嗎?
- 19. 這是一個僞裝成SQL語句的私有函數嗎?
- 20. 這是一個bash腳本的if語句嗎?
- 21. 這是一個有效的重定向語句嗎?
- 22. 這是一個有效的jQuery語句?
- 23. Perl中這兩個打印語句有什麼區別? if語句在做什麼?
- 24. if語句可以放在另一個if語句中嗎?
- 25. 合併同一個表中的兩個select語句嗎?
- 26. PHP如果語句顯示總是一樣的
- 27. 你怎麼樣或兩個LIKE語句?
- 28. 這是爲什麼這個語句追加兩次? Python
- 29. 這是MySql查詢語句正確嗎?
- 30. 這是mysql語句效率低下嗎?
你總是可以自己嘗試一下並找出答案。 :) –