LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
123
返回列表 发新帖
楼主: devel

征求《Perl高级编程》第125页的内容

[复制链接]
发表于 2004-4-30 13:27:10 | 显示全部楼层
你所谓的标量传给了一个数组


这不是标量,关于这点两本书都说得很清楚了。
发表于 2004-4-30 13:27:34 | 显示全部楼层
在底层实现的时候,\ 操作符号直接把数组首地址给了,所有他返回的是一个数组,但是@array = [1,2,3,4];,他先把[1,2,3,4]看成一个整体,因为她要复制这个数组,然后因为@array是一个数组,所以就自动在内部转化为 [1,2,3,4] 成数组的一个元素
发表于 2004-4-30 13:29:41 | 显示全部楼层
那我的书写错了哦?他上面使用的两个例子,都有等同的例子,只有等同的才是对的??
那他还要说什么等同呢?
@array = \(1,2,3,4);不按照你想像的方式运行嘛?也是错的?
发表于 2004-4-30 13:33:31 | 显示全部楼层
是不是哪本书错了,是对是错,实验证明/
发表于 2004-4-30 13:35:22 | 显示全部楼层
你的书没错,另外它说你错了。
@array = \(1,2,3,4);也没错,因为它正是按我的想法运行的。
发表于 2004-4-30 13:46:41 | 显示全部楼层
你不是一直都喜欢看表面现象吗??

这个\(1,2,3,4)不是一直都是你认为的标量吗?

我同学说了,有人喜欢用无知来换来我的愤怒,呵呵,我睡觉了,下午交接项目,那就算我错了,好了,我错了,你是对的,行了不?

OK,Sleeping now
发表于 2004-4-30 13:49:51 | 显示全部楼层
总结一下:
1、@array = [1, 2, 3, 4];
《Perl高级编程》上说这是“perl中一个非常常见的错误”,但tojeff却拿它来说明什么是引用。

2、\(1,2,3,4)
两本书上都说这是引用的数组,tojeff却一口咬定它是标量。

这就是我和他之间的分歧。反正书都在这里,大家自己看吧。
发表于 2004-4-30 13:51:17 | 显示全部楼层
这个\(1,2,3,4)不是一直都是你认为的标量吗?

请指出我什么时候说它是标量的。
谢谢!
发表于 2004-5-2 08:31:32 | 显示全部楼层
实践一下就明白了,可能跟版本有关:
This is perl, v5.8.0 built for i386-linux-thread-multi redhat9。0


  1. @array = [1, 2, 3]这样的赋值是把@array看成二维数组;
  2. 例如:
  3. [linuxer@mydesktop bmp]$ perl -e '@array = ([1, 2,
  4. 3],,);printf("$array[0][1]\n");'
  5. 2
  6. [linuxer@mydesktop bmp]$ perl -e '@array = [1, 2, 3];printf("$array[0]\n");'
  7. ARRAY(0x804c88c)
  8. [linuxer@mydesktop bmp]$ perl -e '@array = [1, 2,
  9. 3];printf("@{$array[0]}\n");'
  10. 1 2 3
  11. [linuxer@mydesktop bmp]$ perl -e '@array = [1, 2,
  12. 3];printf("@{@array[0]}\n");'
  13. 1 2 3
  14. [linuxer@mydesktop bmp]$ perl -e '@array = [1, 2,
  15. 3];printf("$array[0][0]\n");'
  16. 1
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表