找回密码
 点一下
查看: 2981|回复: 12

A useful tip from Lord Esper: the Array in Jass is Hashtable

[复制链接]
发表于 2006-4-10 16:43:16 | 显示全部楼层 |阅读模式
比如下面代码:
  local integer array Arr
  set Arr[8191]=10
并不会真的创建一个8191这么庞大的数组,而是只是相当于Arr.add(8191, 10),所以不用担心下标大小会浪费存储空间了。
刚才65536123是随手写的大数,有误导嫌疑,JASS的native接口对数组下标作了限制,index大于8191的存储会被过滤掉。

再次崇拜 Esper the Great.

[ 本帖最后由 lars 于 2006-4-10 19:15 编辑 ]
发表于 2006-4-10 16:48:35 | 显示全部楼层
呃。原来。如此。
那个[65536123]只素一个id而已。。。。
回复

使用道具 举报

发表于 2006-4-10 18:54:59 | 显示全部楼层

  1. Arr.add(65536123, 10)
复制代码




我看不懂
那篇文章原文是是什么?

我认为效果是:
[jass]
  set Arr[ModuloInteger(65536123, 8192)]=10
[/jass]

[ 本帖最后由 zyl910 于 2006-4-10 19:21 编辑 ]
回复

使用道具 举报

发表于 2006-4-10 18:59:37 | 显示全部楼层
  1.   set Arr[ModuloInteger(65536123, 8192)]=10
复制代码

看不懂。求余么?
回复

使用道具 举报

发表于 2006-4-10 19:00:55 | 显示全部楼层
那是不可能的.............


integer数组下标限定是0-8191。一共只能储存8192个数字。怎么可能弄出个65536123来呢。


确实,WE里面的数组不是固定大小的,但是还是有上下限。
回复

使用道具 举报

发表于 2006-4-10 19:20:57 | 显示全部楼层
common.j
[jass]    constant integer            JASS_MAX_ARRAY_SIZE             = 8192
[/jass]
回复

使用道具 举报

发表于 2006-4-10 19:25:03 | 显示全部楼层
原帖由 amp34 于 2006-4-10 18:59 发表
  1.   set Arr[ModuloInteger(65536123, 8192)]=10
复制代码

看不懂。求余么?


Yes!

等价于C语言代码:

  1. Arr[65536123 %  8192] = 10;
复制代码
回复

使用道具 举报

发表于 2006-4-10 19:31:01 | 显示全部楼层
原帖由 zyl910 于 2006-4-10 19:20 发表
common.j
[jass]    constant integer            JASS_MAX_ARRAY_SIZE             = 8192
[/jass]



那个东西……改了也没有用,还是8192个最大尺寸
回复

使用道具 举报

 楼主| 发表于 2006-4-10 20:01:16 | 显示全部楼层
yep,推测在Array.add的时候做了检测


.

[ 本帖最后由 lars 于 2006-4-10 20:05 编辑 ]
回复

使用道具 举报

发表于 2006-4-10 20:22:44 | 显示全部楼层
原帖由 lars 于 2006-4-10 20:01 发表
yep,推测在Array.add的时候做了检测
.


Jass中有“Array.add”?!

我怎么没见到哪本教材说过

lars大大最好把原文贴过来吧
回复

使用道具 举报

 楼主| 发表于 2006-4-10 20:55:12 | 显示全部楼层
伪代码而已啦,把它看作一个hashtable的话。
没有文章啊,这个是Esper告诉我的,至于Esper是谁,只能说关于War3没见过比他强的人
回复

使用道具 举报

发表于 2006-4-10 21:01:57 | 显示全部楼层

明白了
回复

使用道具 举报

 楼主| 发表于 2006-4-10 21:19:38 | 显示全部楼层
Esper Pale,中国最早研究war3的人之一,以前也是THU的,Esper\'s 3C等地图的作者,Esper\'s 3C在ROC时代就出过两三百个版本,因为我接触时已经有2.32了我记得,无论技术还是战术还是平衡,都是现在诸如DOTA之类的地图无法比拟的,更不用说其它的lj地图了,另,E3C只是其作品之一,而且只论技术的话应该是他的地图中高级技术用的最少的了。
可惜的是,已经退隐war3了,呵呵。偶至今也没赶上其四年前的水平。现在那些活跃的世界闻名的mapper也鲜有能望其项背者。

[ 本帖最后由 lars 于 2006-4-10 21:35 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-5-2 14:25 , Processed in 0.036643 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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