鑑於我有以下不正確的代碼:索引通過子程序返回一個列表 - 語法
my $this_is_easier = caller(0)[0];
爲什麼要爲我做,以編譯以下?
my $this_is_easier = (caller(0))[0];
這只是Perl解析器的一個細微差別嗎?在其他語言如Python和C++中,它假設函數將返回可索引的內容。
鑑於我有以下不正確的代碼:索引通過子程序返回一個列表 - 語法
my $this_is_easier = caller(0)[0];
爲什麼要爲我做,以編譯以下?
my $this_is_easier = (caller(0))[0];
這只是Perl解析器的一個細微差別嗎?在其他語言如Python和C++中,它假設函數將返回可索引的內容。
當[]
遵循另一個索引時,它意味着取消引用。
$foo[...][...] means $foo[...]->[...]
當()
遵循另一個索引時,它意味着取消引用。
$foo[...](...) means $foo[...]->(...)
因此,這是非常合理的,爲人們期待
foo(...)[...]
意味着
foo(...)->[...]
而不是
(foo(...))[0]
在預期的分歧可能是原因它不是supp orted。
更簡單:'我($ this_is_easier)=調用者(0)' – mob
我知道這很容易,但我要求的語法。原來的用法是說來電(0)[0] – edaniels