[求助]请问tsl中求数组长度的函数是什么?
现在遇到问题,我在tsl 手册中怎么也没找到答案,恳请大虾小小的回答以下.我有数组a[];
欲求数组a的元素个数,在c里面是用count函数的,tsl里面没有这个函数.
请教一下,是用什么函数,还是说tsl没有这个函数需要自己写? 哪位大虾指点一下~ 关注中,有哪位同仁解决此问题的
共享下解决方法
[ Last edited by bunny on 2005-10-18 at 15:53 ] 举例回答你的问题:
static hosts [ ] ={10,13,23,233};
for(i in hosts)
report_msg(hosts);
#数组下标从0开始
report_msg("数组含有元素个数为"&(i+1)); 运行一下脚本就会理解了 顺便说一下:
如果脚本中数组下标这么定义,就不能这么用了:
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 ] 原来是这样实现的啊,呵呵,看了TSL参考手册中操作符in的用法后,终于了解了。谢谢楼上的前辈~ 你的方法是问题的:
在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));
大家运行下就知道原因了。 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));
不知可否? 原来通过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); 可以了。以后要多讨论啊
上面的也是好方法啊~
[ Last edited by johngan on 2005-10-19 at 11:05 ] to:aswoon911
前辈客气了,因为偶才刚刚开始自学WR与TSL,因此这里的大家都是前辈,希望以后在学习或实践过程中碰到问题能向你们请教与交流,谢谢~
to:johngan
谢谢你提醒,昨天的确没注意到in的细节,看来读英文文档还是不能马虎啊。以后一定多交流,握手~ 你专门做测试的吗?我是刚刚起步啊,很多不明白啊,谢谢了 以前做过几个小项目中间件的开发与测试,现在是专门做测试的了,但自动化测试这块还不熟悉,尤其是MI的主流商业工具与TSL,现在开始自学。那以后经常交流了,请大家多多关照^^ 我MSN:gly-88888@163.com 对于二维数组如何取得行数与列数呢?
页:
[1]