2

为什么是语法错误:

my @hash{1..4}=(1..4);

但不是这个:

my %hash;
@hash{1..4}=(1..4);
4

3 回答 3

6

第一个例子是一个词法范围的“我的” +一个哈希切片,它预先假设一个人可以以无效语法的切片方式声明一个哈希。你的第二个例子是合适的,首先声明哈希,假设你正在使用严格+警告;

于 2012-06-14T14:16:42.690 回答
5

my需要一个变量或括号中的变量列表作为参数。

@hash{1..4}

两者都不是,所以

my @hash{1..4}

是语法错误。

于 2012-06-14T16:19:53.880 回答
3

第一个例子失败了,因为哈希切片是一个返回一些结果的操作。显然,用my声明附加它是没有意义的,就像写类似my 2+2不会的东西一样。my必须跟要声明的变量列表

第二个示例就是这样做的 - 在当前范围内声明一个哈希,然后访问它的一部分。

于 2012-06-14T14:45:21.923 回答