【发布时间】:2013-02-28 03:37:49
【问题描述】:
您好,我正在学习 perl,我将在这里发布几个假设。因此,如果我在某处有错误,请随时评论和纠正我。
-
创建哈希是通过以下方式完成的(在其他几种方法中):
%numbers = qw(one 1 two 2); -
创建数组的方法如下:
@array = qw(one two); -
以上结构表示“非匿名”类型。非匿名类型和匿名类型之间的主要区别在于命名类型有一个我可以参考的名称。如果我想创建匿名类型,我需要将括号
()更改为数组中的方括号[],或者更改为散列中的括号{}。换句话说,散列的散列是对其他散列的引用的散列。因此我需要在嵌套散列中使用{},而不是经典散列()。%HoH = ( flintstones => { husband => "fred", pal => "barney", }, jetsons => { husband => "george", wife => "jane", "his boy" => "elroy", # quotes needed on key. }, simpsons => { husband => "homer", wife => "marge", kid => "bart", }, ); -
同样的情况也适用于多维数组。多维数组是一个包含对另一个数组的引用的数组,因此需要使用[]代替()。
@array_of_arrays = ( [ "one", "two", "three" ], [ 4, 5, 6, 7 ], [ "alpha", "beta" ] ); -
如果我有包含每个家庭成员(flinstones、jetsons、simpsons)的“非匿名”哈希,我应该使用哪个构造来创建
%HOH?$HOH{flinstones} = {%flinstones};或
$HOH{flinstones} = \%flinstones;我假设
\%flinstones只是将引用分配给$HOH{flinstones},这意味着我对%flinstones所做的任何事情都会影响$HOH{flinstones},因为它只包含对它的引用。另一方面,{%flinstones}类似于将“非匿名”哈希重新转换为“匿名”哈希。这样做的效果是%flinstones可以稍后修改甚至删除,并且不会影响$HOH{flinstones},因为它引用了匿名哈希。 -
循环中的变量会发生什么?当
my $variable;在循环内发出时,它会覆盖旧的或创建新的,或者它是同一个变量,或者这里会发生什么?for($i=0;$i<4;$i++){ my $variable=$i; print $variable }
【问题讨论】:
-
每个问题只能问一个问题。
标签: arrays perl perl-data-structures