我不明白的代碼在Perl看似基本的一塊,它看起來像這樣:Perl:字符串後雙方括號的含義?
$line[$k][1]
什麼是雙方括號的含義是什麼?
我很抱歉,如果這已經要求或者是如此基本可以在每一個初學者的書的Perl找到。我找不到它的任何地方
我不明白的代碼在Perl看似基本的一塊,它看起來像這樣:Perl:字符串後雙方括號的含義?
$line[$k][1]
什麼是雙方括號的含義是什麼?
我很抱歉,如果這已經要求或者是如此基本可以在每一個初學者的書的Perl找到。我找不到它的任何地方
這意味着你有一個二維數組工作。
#!/usr/bin/env perl
use strict;
use warnings;
my @stuff = (
[ 1, 2, 3, 4 ],
[ 5, 6, 7, 8 ],
);
print $stuff[1][2];
#prints '7'
A [..]
是一個數組索引。如果你有2個,那意味着它是一個數組數組。在你的例子中,你得到@line
的$k
th元素的第二個元素(索引從0開始)。
那你認爲這是一個字符串,可能是一個標誌代碼是不是寫的非常好,因爲要沿着my @line;
行線說着什麼確保代碼中有use strict;
和use warnings;
頂部這應該會引發代碼的任何問題。
這意味着你有沒有「串」。這就是所謂的@line
陣列並且在@line
每個元素是到另一個數組的引用。
當您訪問Perl數組中的單個元素時,sigil從@
(意味着多個值)變爲$
(這意味着一個值)。因此,要查找與指數$k
的元素稱爲@line
一個數組,你使用:
$line[$k]
但在你的榜樣,$line[$k]
包含對另一個數組的引用。爲了從數組引用中獲取引用數組的其中一個元素,我們使用->[...]
語法。因此,通過的@line
的$k
個元素所引用的數組的第二個元素是由下式給出:
$line[$k]->[1];
而且在Perl,我們有一個規則,當兩組陣列(或散列)的查找支架分離通過一個解引用數組,我們可以省略那個箭頭。所以,我前面的例子可以簡化爲:
$line[$k][1];
這是一個二維數組的元素。這是一個數組,它對於元素具有數組引用(如'my @ary =([1,2],[4,5]);')。然後你要求的是arrayref的'1'-indexed元素,它是'@ line'數組的'$ k'-indexed元素。完整的語法是'$ line [$ k] - > [1]'但是(在這裏)箭頭可能被丟棄。在我的'@ ary'例子中'$ ary [1] [1]'是'5'。 – zdim