继续emacs以及lisp的学习,这一次来看看带有填充指针功能的array。

上面我们定义了一个维度为5的array,但是从结果看确实一个空的array。我们查看一下对象具体信息如下:

其实,这个定义之后是分配好了相应空间的,只是现在里面的信息是空的。接下来,我们进行数据填充工作。

之后查看,看得到里面的信息有了部分变化。第一个位置,填充了一个数据。

上面的操作,把这个array的空间填充满了。从操作效果也能够看得出,每一次填充都有带有一个返回值,返回值是这一次填充的index值。

如果此时,继续填充,那么将会填充失败并且返回nil。

此时如果查看内存信息,发现所有的信息其实还都在。但是,如果这时候在REPL中查看*a0*则会发现只剩下了3个数据。

再次进行扩充尝试,可以看出这个维度最大就是最初的设定值,不能够进行更大的扩充。我们再回到3个元素的时候。

重新追加,能够从当前的位置分界点往后追加。这里也能够看得出一个类似指针的行为。有一点其实很重要,那就是进行维度压缩的时候信息不会丢失。这个可能是我们想要的,但是也有可能是一些垃圾数据需要我们自己处理。
 
 
                     
            
        













 
                    

 
                 
                    