說我定義數組爲:
my @my_array = ["hello", "world"]
有沒有在我的代碼使用$my_array
VS \@my_array
以後有什麼區別?
我推測它們都是對@array
的標量引用,但我想我看過我的一個程序的行爲有所不同,具體取決於我使用的是哪一個。
他們之間有什麼區別嗎?
說我定義數組爲:
my @my_array = ["hello", "world"]
有沒有在我的代碼使用$my_array
VS \@my_array
以後有什麼區別?
我推測它們都是對@array
的標量引用,但我想我看過我的一個程序的行爲有所不同,具體取決於我使用的是哪一個。
他們之間有什麼區別嗎?
@array
是陣列$var
是標量\@array
是標量 - 參考陣列@array
("hello", "world")
是列表(@array
兼容)["hello", "world"]
標量,參照陣列。它與變量@array
中的存儲數組("hello", "world")
相同,然後從中取參考\@array
。當使用:
my $my_array = ["hello", "world"]
創建變量$my_array
其是參考陣列("hello", "world")
。
當使用:
my @my_array = ["hello", "world"]
創建含有單個元件的陣列:參照陣列("hello", "world")
。
你的第五個項目符號點是false。 '\(「hello」,「world」)'與'(\「hello」,\「world」)'相同。 –
@JimDavis:同意,修正。 doc參考:http://perldoc.perl.org/perlref.html – mvp
謝謝mvp。我從這裏得知'\ @ my_array'和'$ my_array'之間沒有區別呢?我已更新OP以澄清任何可能的混淆。 –
\@my_array
和$my_array
有什麼不同?這取決於:
my @my_array = qw(hello world); #Note the use of parentheses
my $my_array = "Hello, I am just some random string!";
在上述情況下,存在\@my_array
$my_array
和之間的差。變量名稱中的相似並不一定意味着一種關係。
然而:
my @my_array qw(hello world);
my $my_array = \@my_array;
\@my_array
$my_array
和將是相同的。 @my_array
中的更改將反映在參考文獻$my_array
中。
在你的代碼有:
my @my_array = ["hello", "world"];
這實在是一個奇怪的語法......
[...]
語法定義參考到一個數組。使用
my @my_array = ("hello", "world"); #Note the parentheses and not straight brackets
看這個節目Data::Dumper:
use strict;
use warnings;
use feature qw(say);
use Data::Dumper;
my @my_array = ["hello", "world"];
say Dumper \@my_array;
輸出是:
大多數時候,你會看到這樣的事情:my $array_ref = ["hello", "world"]; #Note the assignment to a scalar and not an array
或本
$VAR1 = [
[
'hello',
'world'
]
];
什麼這就是說有一個單一元素的數組(即,@my_array
僅包含$my_array[0]
),並且該數組中的該元素是對包含兩個元素'hello'和'world'的另一個數組的引用。
請向我們展示如何在可疑代碼中定義'$ my_array'。你已經獲得了相當全面的'perlref'作爲答案,但它們並沒有幫助。看到你代碼中的差異*會幫助我們評論你期望或不期望的差異。 (的確,現在我要說,你所展示的代碼的主要區別在於'$ my_array'會在'use strict'下爆炸:)) – pilcrow