转自:http://blog.csdn.net/tulituqi/article/details/7907981

一、List变量及其用法

在我们前面几篇文章里用到了很多List变量,相信以后各位也会碰到需要使用的地方。

1、List变量赋值

和Scalar类似的赋值,除了用Set Variable还可以用Create List。

运行一下:

2、List变量使用

在使用上要注意看关键字的参数到底是Scalar的还是List,区别就是看变量名前面是否有 * (星号),如图:

这个关键字的name就是支持传入Scalar型的参数,*args就是支持可以传入List型值的。

所谓List型值其实是说支持多个值,即不确定个数的,List-like一样的值,如下图的2、3行:

当然,并不是说没有星号的就不能用List的,只要是多个变量就可以用List传值。

像Log这个关键字,他有2个Scalar型的传入参数,如果我想传List也是可以的,但是必须是一个有2个元素的List,因为Log的第二个参数有默认值,所以如果你传入1个元素的List也是可以的,但是如果传入3个元素的List,那么就会报错了。

你可以写成上面这样,但是我并不推荐这种做法,这里只是为了讲解List的作用而做的示范。

综上,对于有多个参数的关键字,你可以按照需要传入多个Scalar变量,也可以传入List变量,根据你自己的需要选择合适的方式。

二、变量转换

之前提过了Scalar变量用 $ 作为标识符,List型变量用 @ 作为标识符,而且他们是可以进行转换的,理论上可以互相进行转换,但是也有一点限制。

1、List变量转换成Scalar

这种转换的效果是把整个List变成一个Scalar,我觉得作用主要是对于那些只接收Scalar变量参数的关键字,而你又想传List的全部值的时候,或者其他你需要的把List当作Scalar的情况下使用。例如Fail关键字,他的msg这个参数只能接收Scalar变量。

如果你想用Fail,把f这个变量的值都打出来,下面这样写是肯定会报错的。

报错信息为 Keyword 'BuiltIn.Fail' expected 0 to 1 arguments, got 3.

那么我们转换一下,这样写就不报错了。

运行结果:

2、Scalar变量转换成List

其实以前介绍用户关键字的时候也演示过,对于返回值是List的关键字,如果你给要赋值的变量写的是Scalar的,他会自动把他变成List的。

还是上面这个例子,我们把@{f}改成${f}

这样也是OK的。

3、转换的限制

但是,我前面提到了,转换是有一点限制的。

首先,上一讲提到了,变量要进行赋值(类似于初始化)之后才能使用,如果没有进行过赋值的RIDE里会有颜色提示,用一个前面的图

图中的紫色${f}就是提示你他没有进行过赋值,此时而系统会默认他就是@{f}的Scalar形式,这个可以看上面的执行结果。

那么这个限制就在Scalar转换成List的地方,系统会默认${f}是@{f}的Scalar形式,但是他并不会默认@{f}是${f}的list形式,即使${f}已经是list了。

看一下例子:

这样写的话运行就会报错:Non-existing variable '@{f}'.

那这时候${f}有什么用呢?除了前面介绍的作为Scalar型变量,值是所有元素,还可以根据index直接获得某个元素。

例如:

运行结果:

看完上面的限制之后,还要补充一点,系统会默认${f}是@{f}的Scalar形式,这个也是有限制,必须是${f}没有被赋值过的情况,如果${f}被赋值过是什么情况呢?

看看例子:

你觉得${f}会是什么值呢?

所以,这里要注意,尽量不要让Scalar和List的变量重名,特别是你要用作不同的用途的时候。

一个重要的影响就是会导致下面的List元素获取出现越界的情况。

三、List元素的获取

List元素的获取只有一种方式,无论是一维List还是二维List,都是用${变量名[index]},就是用$的变量,在变量名后面加上方括号,里面是序号。

1、一维List的例子。

运行:

2、二维List的例子。

运行结果:

如果log后面只写${f[1]},那么得到的结果如图:

总之,就是用方括号来表明你需要的元素,如果是多维List,要想清楚你到底要哪层的,不要写少了或者写多了。

最新文章

  1. Wix打包技术学习笔记
  2. 关于AlertDialog.Builder(Context context)中所应传入的context
  3. (十六)WebGIS中偏移补偿量引发的问题之探讨
  4. 使用面向 iOS 的本机插件扩展 PhoneGap
  5. python环境搭建-pycharm2016软件注册码
  6. powershell玩转sqlite数据库
  7. matlab练习程序(透视投影,把lena贴到billboard上)
  8. Java -verbose:gc 命令
  9. ASP.NET中的状态保持(转载)
  10. Oracle中使用escape关键字实现like匹配特殊字符,以及&字符的转义
  11. Android-关于android:scrollbarStyle属性
  12. javascript 函数学习
  13. logstash 安装WARNING: SSLSocket#session= is not supported
  14. unity提取打包资源
  15. centos6.4 ceph安装部署之ceph block device
  16. 关于VS2013的编码的UI测试。
  17. (17)IO中的异常处理
  18. Struts2之Action接收请求参数和拦截器
  19. 通过java代码执行Linux命令查询声卡和显卡 型号
  20. __tostring()和__invoke()的用法

热门文章

  1. python练习之购物车脚本
  2. 【CodeVS 1198】【NOIP 2012】国王游戏
  3. java-byte[]图片在页面展示
  4. 数组与指针-----a[i]=*(a+i)=i[a]
  5. Anroid Studio入门
  6. 【bzoj3156】 防御准备
  7. AutoIt3(AU3)开发的装机小工具,实现快速检测以及一些重用快捷操作功能
  8. Zabbix low-level discovery
  9. SQL查询排序某字段并选前N条数据
  10. xpath中/和//的差别