免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3179 | 回复: 19
打印 上一主题 下一主题

数组套散列和散列套散列报错,请指教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-27 15:43 |只看该作者 |倒序浏览
@b = (["1" => "a", "2" => "b"], ["a" => "A", "b" => "B"]);
print $b[0]{"2"},"\n";              <-- 报错

%d = ("m" => ["1" => 10, "2" => 20], "n" => ["1" => 100, "2" => 200]);
print $d{"m"}{"2"},"\n";                <-- 报错

为什么是错误的?要如何改?谢谢!

论坛徽章:
0
2 [报告]
发表于 2010-09-27 15:49 |只看该作者
本帖最后由 珞水的大叔 于 2010-09-27 15:50 编辑

[]是数组的引用
例如:["1" => "a", "2" => "b"]等价于[("1","a","2","b")]
{}才是哈希的引用
改为:
  1. @b = ({"1" => "a", "2" => "b"}, {"a" => "A", "b" => "B"});
  2. %d = ("m" => {"1" => 10, "2" => 20}, "n" => {"1" => 100, "2" => 200});
复制代码

论坛徽章:
0
3 [报告]
发表于 2010-09-27 15:52 |只看该作者
[]是数组的引用
例如:["1" => "a", "2" => "b"]等价于[("1","a","2","b")]
{}才是哈希的引用
改为:
珞水的大叔 发表于 2010-09-27 15:49


好像不对啊,还是报错

论坛徽章:
0
4 [报告]
发表于 2010-09-27 15:56 |只看该作者
=>···起神奇逗号作用···

论坛徽章:
0
5 [报告]
发表于 2010-09-27 16:01 |只看该作者
=>···起神奇逗号作用···
wfnh 发表于 2010-09-27 15:56


就是说这种写法不正确喽

那应该怎么写呢?

论坛徽章:
0
6 [报告]
发表于 2010-09-27 16:07 |只看该作者
回复 3# 有行动才会有收获


    我在2楼里面写了啊
  仔细看看

  改为:
  1. @b = ({"1" => "a", "2" => "b"}, {"a" => "A", "b" => "B"});
  2. %d = ("m" => {"1" => 10, "2" => 20}, "n" => {"1" => 100, "2" => 200});
复制代码

论坛徽章:
0
7 [报告]
发表于 2010-09-27 16:09 |只看该作者
本帖最后由 珞水的大叔 于 2010-09-27 16:10 编辑
好像不对啊,还是报错
有行动才会有收获 发表于 2010-09-27 15:52



    我写的这个
    例如:["1" => "a", "2" => "b"]等价于[("1","a","2","b")]
    就是你原来错误写法的等价状况,它当然是错的啊……

论坛徽章:
0
8 [报告]
发表于 2010-09-27 16:09 |只看该作者
本帖最后由 wfnh 于 2010-09-27 16:12 编辑

回复 5# 有行动才会有收获


    如果··你要你的print语句不变的话···可以这样定义数组:
@b = ({'1' => "a"}, {"2" => "b"}, {"a" => "A"},{"b" => "B"});

or

@b = ({'1' => "a", "2" => "b"}, {"a" => "A","b" => "B"});

论坛徽章:
0
9 [报告]
发表于 2010-09-27 16:11 |只看该作者
回复  有行动才会有收获


    我在2楼里面写了啊
  仔细看看

  改为:
珞水的大叔 发表于 2010-09-27 16:07


我直接复制你的代码,执行正确

看来是我之前改错了

谢谢!

论坛徽章:
0
10 [报告]
发表于 2010-09-27 16:12 |只看该作者
  1. my @b = ({"1" => "a", "2" => "b"}, {"a" => "A", "b" => "B"});
  2. my %d = ("m" => {"1" => 10, "2" => 20}, "n" => {"1" => 100, "2" => 200});

  3. print $b[0]{"1"},"\n";
  4. print $d{"m"}{"1"},"\n";
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP