加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 引用问题的数组与列表

发布时间:2020-12-15 23:30:58 所属栏目:大数据 来源:网络整理
导读:关于以下代码的两个问题: %h1 = { 'key1' = ( 1,2,3 ),'key2' = ( 4,5,6 ) };%h2 = { 'key1' = [ 1,3 ],'key2' = [ 4,6 ] };print $(@h1{'key2'})[1]; Q1:h1和h2有什么区别?请不要说’一个是列表的哈希和另一个数组的哈希’…相反,我想知道在使用方面的转
关于以下代码的两个问题:

%h1 = {
    'key1' => ( 1,2,3 ),'key2' => ( 4,5,6 )
    };

%h2 = {
    'key1' => [ 1,3 ],'key2' => [ 4,6 ]
    };

print $(@h1{'key2'})[1];

Q1:h1和h2有什么区别?请不要说’一个是列表的哈希和另一个数组的哈希’…相反,我想知道在使用方面的转换.

Q2:为什么print语句中的引用$(@ h1 {‘key2’})[1]不能编译?这是我的想法:我想访问对应于’key2’的数组/列表:@ h1 {‘key2’}.然后我想访问该列表/数组中索引1处的标量:$(@ h1 {‘key2’})[1].为什么这是错的?这个变量引用的东西很混乱.

解决方法

这些都不像你想的那样工作.使用严格并始终使用警告.

%h1 = {
'key1' => ( 1,6 )
};

您正在尝试将hashref({}构造)分配给哈希.它被字符串化为标量,并在%h1中用作键,值为undef.另外,因为你正在使用列表(()构造),它会变得扁平,你正在创建哈希:

%href = ( key1 => 1,2 => 3,key2 => 4,5 => 6,);

在后一种情况下,您使用数组引用([]构造)正确创建哈希,但您仍然在为哈希分配href.你想做:

%h1 = (
'key1' => [ 1,6 ]
);

这将通过引用在列表上下文中创建%h1,在标量上下文中创建值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读