Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16646|回复: 194

[初级篇] 第7课:重要概念——list功能详解

  [复制链接]
发表于 2015-1-21 16:39:58 | 显示全部楼层 |阅读模式
如果你觉得本教程对你有帮助,欢迎大家转载到各大论坛博客。转载还请注明出处哦。老罗感谢大家一直以来的支持!

Skill中,list是一个非常重要的概念。基本上每一个skill都会用到list,所以大家一定要list学透。
1.什么是list?
list光从字面上可理解为“列表”、“链表”。Skill中,list是各种数据元素的集合,。list与数组类似,但又不全一样;数组定义时一般要指定长度和数据类型,并且各个数据元素的类型必须一致,而list不需要指定长度,且list的长度可随时变化,也可以存放任意数据类型。下面举个例子:

  1. Skill > a = '(1 2 3 4 5 6 7 8 9 10)
  2. (1 2 3 4 5
  3.     6 7 8 9 10
  4. )
  5. Skill > a
  6. (1 2 3 4 5
  7.     6 7 8 9 10
  8. )
  9. Skill > type(a)
  10. list
复制代码

将list赋值给变量a,该list中共10个元素;变量a的类型为list。(可以通过type函数来查看变量类型)

2.list的创建
游客,如果您要查看本帖隐藏内容请回复


如果你觉得本教程对你有帮助,欢迎大家转载到各大论坛博客。转载还请注明出处哦。老罗感谢大家一直以来的支持!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
发表于 2015-3-12 15:57:29 | 显示全部楼层
1. list()list(nil)有什么区别?前面是系统自动返回值nil,后面是把nil当字符返回(nil)4qian_" X3 T3 ~: s  N6 P
2. cons(a list1)
cons('alist1)有什么区别,另外,cons函数的第一个传递参数有什么要求?
前面a是个变量,返回他定义的字符。后面a就是一个list的返回值。cons函数的第一个传递参数要是是数据字符或已定义的变量。
3.
现在又一个list(10 2030 40),请在该list后添加一个数字50,组成新的list(1020 30 40 50)

4.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
发表于 2015-2-5 21:25:15 | 显示全部楼层
交作业~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
发表于 2015-1-21 16:47:11 | 显示全部楼层
誓死学会skill.
 楼主| 发表于 2015-1-21 16:48:55 来自手机 | 显示全部楼层
leench124 发表于 2015-1-21 16:47
誓死学会skill.

你速度真快。
发表于 2015-1-21 17:10:01 | 显示全部楼层

收到老师的mail,第一时间就来学习了。
发表于 2015-1-21 17:17:58 | 显示全部楼层
赶紧来看看,谢谢罗老师,辛苦了!
发表于 2015-1-21 17:45:54 | 显示全部楼层
学习学习!谢谢!
发表于 2015-1-22 09:15:54 | 显示全部楼层
我又来了!加油哦!!!
发表于 2015-1-22 10:32:51 | 显示全部楼层
本帖最后由 leench124 于 2015-1-28 11:50 编辑

喜交作业,摩擦摩擦~~请罗老师检查。不对之处,还望罗老师不吝赐教。

1、list()与list(nil)的区别为:
list()意为创建一个空链表,而list(nil)意为创建一个元素为nil的链表,换句话说就是list()没有element(元素),而list(nil)的element(元素)为nil;
2.1、cons(a list1)与cons('a list1)的区别为前者将一个浮点数(a = 0)插入到list1首地址的前面,后者将一个symbol(a)插入到list1首地址的前面;
2.2、cons的第一个传递函数可以为任何数据类型,但是须为已知数;

3、源码如下:l4即为所求
Skill >  l1 = list(10 20 30 40)
(10 20 30 40)
Skill > l2 = reverse(l1)
(40 30 20 10)
Skill > l3 = cons(50 l2)
(50 40 30 20 10)
Skill > l4 = reverse(l3)
(10 20 30 40 50)

上述方法绕远了,下面方法更简单:
Skill > l1 = list(10 20 30 40)
(10 20 30 40)
Skill > l2 = append1(l1 50)
(10 20 30 40 50)
l2即为所求

4、显示如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
发表于 2015-1-22 12:08:56 | 显示全部楼层
支持楼主,谢谢楼主了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|网站地图|Cadence Skill 论坛 ( 蜀ICP备13024417号

GMT+8, 2018-12-17 11:47 , Processed in 0.254122 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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