【问题标题】:Indexing perl array索引 perl 数组
【发布时间】:2022-01-18 05:05:13
【问题描述】:

我有以下代码

@ar1 = ('kaje','beje','ceje','danjo');
$m = 'kajes';
my($next) = grep $_ eq 'kaje',@ar1;
print("Position is $next\n");
print("Next is $ar1[$next+1]\n");
print("Array of c is $ar1[$m+3]\n");
print("Array at m is $ar1[$m]\n");

看到的输出:

Position is kaje
Next is beje
Array of c is danjo
Array at m is kaje

我想了解它是如何工作的。这里 $next 是匹配的字符串,我可以为给定数组索引该字符串。在数组中也没有找到 $m,但我们将输出作为数组的第一个元素。

【问题讨论】:

  • 总是使用use strict; use warnings;。它会回答你的问题

标签: arrays perl indexing


【解决方案1】:

始终使用use strict; use warnings;。它回答了你的问题。

在一个地方,您将字符串 kaje 视为一个数字。

在两个地方,您将字符串 kajes 视为一个数字。

由于这两个字符串不是数字,Perl 将使用零并发出警告。

换句话说,Next is beje 仅“有效”,因为kaje 恰好位于索引0。我不知道您为什么认为最后两行代码可以工作,因为 kajes 不在数组中。


你想要

# Find the index of the element with value `kaje`.
my ($i) = grep $ar1[$_] eq 'kaje', 0..$#ar1;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 2011-09-11
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多