【问题标题】:Difference between accessing array with $arr[x] and @arr[x] [duplicate]使用 $arr[x] 和 @arr[x] [重复] 访问数组之间的区别
【发布时间】:2020-10-14 09:03:25
【问题描述】:

要访问数组元素,@ 和 $ 都可以。例如:

@item_price_list = (5 , 8 , 24);
@item_name_list = ("Apple", "Banana", "Mushroom");
print "The price of one @item_name_list[1] is @item_price_list[1] gold coins.\n";
print "The price of one $item_name_list[1] is $item_price_list[1] gold coins.\n";

在我看来,这种语法是不规则的:$ 用于定义标量,但也可以用于引用数组。在 bash 中,当我们想要引用变量时,我们在变量前使用 $$ 不被视为变量名的一部分,但在 per 中,$ 被视为标量变量的一部分。 @ 在 perl 中不被视为数组名的一部分吗?

【问题讨论】:

标签: arrays perl variables


【解决方案1】:

数组上的前导符号('$' 或'@')表示您返回的是单数(标量)还是复数(列表)。列表是否由一个元素组成,如

@item_price_list[1]

或多个元素,如

@item_price_list[0..2]

列表与数组的一个主要区别是,标量上下文中的列表返回列表的最后一个元素,而数组将返回列表中元素的数量。

所以添加

print "The price of one @item_name_list[1] is " .  @item_price_list[0..2] . " gold coins.\n";

会产生

The price of one Banana is 24 gold coins.

同时

print "The price of one @item_name_list[1] is " .  @item_price_list . " gold coins.\n";

会产生

The price of one Banana is 3 gold coins.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 2013-06-14
    • 2016-03-16
    相关资源
    最近更新 更多