maonan0001 发表于 2005-8-25 15:49:36

[求助]请问tsl中求数组长度的函数是什么?

现在遇到问题,我在tsl 手册中怎么也没找到答案,恳请大虾小小的回答以下.

我有数组a[];
欲求数组a的元素个数,在c里面是用count函数的,tsl里面没有这个函数.
请教一下,是用什么函数,还是说tsl没有这个函数需要自己写?

maonan0001 发表于 2005-8-26 14:31:30

哪位大虾指点一下~

bunny 发表于 2005-10-18 15:50:18

关注中,有哪位同仁解决此问题的
共享下解决方法

[ Last edited by bunny on 2005-10-18 at 15:53 ]

aswoon911 发表于 2005-10-18 17:49:45

举例回答你的问题:


static hosts [ ] ={10,13,23,233};
for(i in hosts)

report_msg(hosts);

#数组下标从0开始
report_msg("数组含有元素个数为"&(i+1));

aswoon911 发表于 2005-10-18 17:50:27

运行一下脚本就会理解了

aswoon911 发表于 2005-10-18 18:36:14

顺便说一下:
如果脚本中数组下标这么定义,就不能这么用了:
static hosts [] ={"i"=101,"j"=100,"k"=1000};
report_msg(hosts["i"]);
report_msg(hosts["j"]);
report_msg(hosts["k"]);

这时只能一个下标一个下标的找(因为此时的下标是字符):
if("i" in hosts)
计数加1;
if("j" in hosts)
计数加1;
if("k" in hosts)
计数加1;


呵呵,所以还是做好不要这样定义数组.

[ Last edited by aswoon911 on 2005-10-18 at 18:38 ]

迎风 发表于 2005-10-18 19:01:45

原来是这样实现的啊,呵呵,看了TSL参考手册中操作符in的用法后,终于了解了。谢谢楼上的前辈~

johngan 发表于 2005-10-19 10:06:11

你的方法是问题的:
在TSL对IN操作苻的解释有这样的话:The order in which the subscripts are read is undefined.
我在第一个脚本的基础上改了下:
static hosts [ ] ={10,12,13,3,1,233};
for(i in hosts)
report_msg(i);
for(i in hosts)
report_msg(hosts);

#数组下标从0开始
report_msg("数组含有元素个数为"&(i+1));

大家运行下就知道原因了。

aswoon911 发表于 2005-10-19 10:40:13

To:迎风
呵呵,哪里敢当前辈,大家一起讨论嘛,互相学习.

To:johngan
嗯,真的有问题,以前用的都倏忽了,奇怪以前怎么没发现.

想想改进方法:
static hosts [ ] ={10,12,13,3,1,233};
for(i in hosts)
report_msg(i);
max_dimension=0;
for(i in hosts)
{if(i>max_dimension)
max_dimension=i;
report_msg(hosts);
}

#数组下标从0开始
report_msg("数组含有元素个数为"&(max_dimension+1));

不知可否?

迎风 发表于 2005-10-19 10:59:22

原来通过in操作符取得的i值并不确定,因为每次循环i都是取数组中的随机(即不确定)位置,因此最后一次的i值也只是数组中的某位置下标值,并不是数组中元素的个数。既然这样,可以通过设置一个计数变量嵌在for循环中来实现计数,比如:

static hosts [ ] ={10,12,13,3,1,233};

#设置计数变量并初始化
count=0;

for(i in hosts)
{
        report_msg(hosts);
        count=count+1;
}
#数组下标从0开始
report_msg("数组含有元素个数为"&count);

johngan 发表于 2005-10-19 11:02:58

可以了。以后要多讨论啊
上面的也是好方法啊~

[ Last edited by johngan on 2005-10-19 at 11:05 ]

迎风 发表于 2005-10-19 11:30:23

to:aswoon911

前辈客气了,因为偶才刚刚开始自学WR与TSL,因此这里的大家都是前辈,希望以后在学习或实践过程中碰到问题能向你们请教与交流,谢谢~

to:johngan

谢谢你提醒,昨天的确没注意到in的细节,看来读英文文档还是不能马虎啊。以后一定多交流,握手~

johngan 发表于 2005-10-19 11:42:43

你专门做测试的吗?我是刚刚起步啊,很多不明白啊,谢谢了

迎风 发表于 2005-10-19 11:50:21

以前做过几个小项目中间件的开发与测试,现在是专门做测试的了,但自动化测试这块还不熟悉,尤其是MI的主流商业工具与TSL,现在开始自学。那以后经常交流了,请大家多多关照^^

johngan 发表于 2005-10-19 12:33:25

我MSN:gly-88888@163.com

hu261261 发表于 2006-7-26 20:13:07

对于二维数组如何取得行数与列数呢?
页: [1]
查看完整版本: [求助]请问tsl中求数组长度的函数是什么?