LISP阵列

  • 时间:
  • 浏览:59
  • 来源:it300
lisp允许您使用make array函数定义单个或多个维度数组。数组可以将任何lisp对象存储为其元素。所有数组都由连续的内存位置组成。最低地址对应于第一个元素,最高地址对应于最后一个元素。数组的维数称为其秩。在Lisp中,数组元素由非负整数索引序列指定。序列的长度必须等于数组的秩。索引从零开始。例如,要创建一个有10个单元格的数组,命名为my array,我们可以写−(setf my array(make array'(10)),aref函数允许访问单元格的内容。它需要两个参数,即数组的名称和索引值。例如,为了访问第十个单元格的内容,我们编写−(aref my array 9)示例1创建一个名为main.lisp的新源代码文件,并在其中键入以下代码。实时演示(写入(setf my array(make array'(10)))(terpri)(setf(aref my array 0)25)(setf(aref my array 1)23)(setf(aref my array 2)45)(setf(aref my array 3)10)(setf(aref my array 4)20)(setf(aref my array 5)17)(setf(aref my array 6)25)(setf(aref my array 7)19)(setf(aref my array 8)67)(setf(aref my array 9)30)(写入我的阵列)时间执行代码后,它返回以下结果−(nil nil nil nil nil nil nil nil nil)(25 23 45 10 20 17 25 19 67 30)示例2让我们创建一个3乘3数组。创建一个名为main.lisp的新源代码文件,并在其中键入以下代码。实时演示(setf x(make array'(3 3):初始内容“((0 1 2)(3 4 5)(6 7 8)))(写入x)执行代码时,它返回以下结果−2a((0 1 2)(3 4 5)(6 7 8))示例3创建名为main.lisp的新源代码文件并在其中键入以下代码。实时演示(setq a(make array'(4 3))(dotimes(i 4)(dotimes(j 3)(setf(aref a i j)(list i'x j'=(*i j)))(dotimes(i 4)(dotimes(j 3)(print(aref a i j)))执行代码时,返回以下结果−(0 x 0=0)(0 x 1=0)(0 x 2=0)(1 x 0=0)(1 x 1=1)(1 x 2=2)(2 x 0=0)(2 x 1=2)(2 x 2=4)(3 x 0=0)(3 x 1=3)(3 x 2=6)make array函数的完整语法make array函数接受许多其他参数。让我们看一下这个函数的完整语法−make array dimensions:element type:initial element:initial contents:adjustable:fill pointer:位移到:从dimensions参数中位移的index offsetapart,所有其他参数都是关键字。下表提供了arguments.sr.no.arguments

猜你喜欢

希腊最高法院批准俄罗斯对比特币嫌疑人的请求

希腊最高法院批准俄罗斯对比特币嫌疑人的请求希腊最高法院上周五表示,一名据称使用比特币数字货币洗钱40亿美元的俄罗斯人应该被引渡到俄罗斯,一位法院消息人士说。AlexanderV

2019-02-01

塑造美国网络防御的创造性破坏和自满情绪

塑造美国网络防御的创造性破坏和自满情绪创造性的破坏,思维的范式转换取代现有的秩序,可能是一个难以捉摸的概念,但它作为人类行为驱动力的力量是不可否认的。在硅谷和其他美国的高层科技

2019-02-01

为什么我(非常)担心PRISM

为什么我(非常)担心PRISM美国国家安全局正在利用我们的数字生活,监控语音电话,电子邮件,社交媒体以及谁知道什么。美国国家安全局方面的人说,这是为了国家安全;它已经停止了恐怖

2019-02-01

先发优势:为什么新的恶意软件最初会打败反恐

先发优势:为什么新的恶意软件最初会打败反恐虽然反病毒解决方案可以有效对抗广泛使用的恶意软件,但是有一个很好的机会,新的恶意软件会躲过那些解决方案。最近有重大安全事件的报告激增,

2019-02-01

台湾银行抢劫与朝鲜黑客有关

台湾银行抢劫与朝鲜黑客有关最近针对台湾一家银行的网络抢劫事件已被安全研究人员联系到一个据信在朝鲜境外活动的臭名昭着的威胁组织。黑客利用SWIFT全球金融网络大致窃取来自台湾远东

2019-02-01