EETOP 创芯网论坛 (原名:电子顶级开发网)

标题: SKILL user guide上有一段看不懂 [打印本页]

作者: 瓦萊希特夸    时间: 2017-8-2 20:18
标题: SKILL user guide上有一段看不懂
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里只剩另外两项,很是迷茫。请问有没有大神解惑,红色字体函数是怎么个运行机制?
作者: amodaman    时间: 2017-8-3 11:34
回复 1# 瓦萊希特夸


    这段代码没问题,我试了一下,排序返回的list 成功做到了排序,见附件

(, 下载次数: 34 )
作者: amodaman    时间: 2017-8-3 11:37
回复 1# 瓦萊希特夸


    这段排序代码的意思就是队列里面相邻的两个元素,按照strength的属性的值进行由小到大的排序
作者: 瓦萊希特夸    时间: 2017-8-3 13:58
回复 3# amodaman


    按照你的方法直接敲进CIW确实能得到和你一样的结果。
    不过我写成il文件再load就会出现我说的结果,难道是我printf用错了吗?如图:

                               
登录/注册后可看大图





                               
登录/注册后可看大图

作者: amodaman    时间: 2017-8-3 14:23
回复 1# 瓦萊希特夸


   不管是不是敲进CIW输入行,还是用文件load的形式读进来,排序后的结果都没有错。你再看一下SKILL方面的基本问题吧...
作者: 瓦萊希特夸    时间: 2017-8-3 14:44
回复 5# amodaman


    刚才我的回复好像被吞了。。就用文字表述吧。
    我用文件load在最后加了一行printf使结果显示出来,就少了0.4那项,是我printf用错了吗?
    还有我想问为什么a->strength就能表示后面的那个数字?才学几天SKILL,望解答,不胜感谢!
作者: superguy    时间: 2017-8-3 15:31
回复 6# 瓦萊希特夸

a->strength 得到的就是后面的数值。

这是个disembodied property list (DPL), 没记错的话是这样拼。

作者: 瓦萊希特夸    时间: 2017-8-3 15:44
回复 7# superguy


    我还没学习到这个点,感谢!
作者: amodaman    时间: 2017-8-3 15:49
回复 6# 瓦萊希特夸


    那肯定是你printf函数写错了呗
作者: amodaman    时间: 2017-8-3 15:54
回复 6# 瓦萊希特夸



(, 下载次数: 33 )
作者: 瓦萊希特夸    时间: 2017-8-3 17:39
回复 10# amodaman


    我printf signalList了,看来是原List在运算中被更改了,谢谢你!
作者: amodaman    时间: 2017-8-3 17:49
回复 11# 瓦萊希特夸


sort函数确实会改动原始的输入变量,见附图中sort函数说明被我Highlighted的一段话。

(, 下载次数: 22 )
作者: 瓦萊希特夸    时间: 2017-8-4 09:49
回复 12# amodaman


    感谢,之后的学习中遇到问题再请教咯!
作者: 瓦萊希特夸    时间: 2017-8-4 16:51
回复 7# superguy


    disembodied property list是一种特殊的list吗?只能是包含3个数值吗,因为我把nil去掉会报错,再加上一个数值也会报错。




欢迎光临 EETOP 创芯网论坛 (原名:电子顶级开发网) (https://bbs.eetop.cn/) Powered by Discuz! X3.4