SKILL user guide上有一段看不懂
时间:10-02
整理:3721RD
点击:
signalList = '(
( nil strength 1.5 )
( nil strength 0.4 )
( nil strength 2.5 )
)
sort( signalList
'lambda( ( a b ) a->strength <= b->strength )
)
从sort关键字来看这应该是个排序函数,不过我把以上句子加一句printf建成il,在virtuoso里load之后,显示结果 ( nil strength 0.4 )这一项不见了。就是说signalList里只剩另外两项,很是迷茫。请问有没有大神解惑,红色字体函数是怎么个运行机制?
( nil strength 1.5 )
( nil strength 0.4 )
( nil strength 2.5 )
)
sort( signalList
'lambda( ( a b ) a->strength <= b->strength )
)
从sort关键字来看这应该是个排序函数,不过我把以上句子加一句printf建成il,在virtuoso里load之后,显示结果 ( nil strength 0.4 )这一项不见了。就是说signalList里只剩另外两项,很是迷茫。请问有没有大神解惑,红色字体函数是怎么个运行机制?
这段代码没问题,我试了一下,排序返回的list 成功做到了排序,见附件
这段排序代码的意思就是队列里面相邻的两个元素,按照strength的属性的值进行由小到大的排序
按照你的方法直接敲进CIW确实能得到和你一样的结果。
不过我写成il文件再load就会出现我说的结果,难道是我printf用错了吗?如图:
不管是不是敲进CIW输入行,还是用文件load的形式读进来,排序后的结果都没有错。你再看一下SKILL方面的基本问题吧...
刚才我的回复好像被吞了。就用文字表述吧。
我用文件load在最后加了一行printf使结果显示出来,就少了0.4那项,是我printf用错了吗?
还有我想问为什么a->strength就能表示后面的那个数字?才学几天SKILL,望解答,不胜感谢!
a->strength 得到的就是后面的数值。
这是个disembodied property list (DPL), 没记错的话是这样拼。
我还没学习到这个点,感谢!
那肯定是你printf函数写错了呗
我printf signalList了,看来是原List在运算中被更改了,谢谢你!
sort函数确实会改动原始的输入变量,见附图中sort函数说明被我Highlighted的一段话。
感谢,之后的学习中遇到问题再请教咯!
disembodied property list是一种特殊的list吗?只能是包含3个数值吗,因为我把nil去掉会报错,再加上一个数值也会报错。