找回密码
 注册
关于网站域名变更的通知
查看: 722|回复: 3
打印 上一主题 下一主题

命令list与撇号的区别问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2014-5-26 11:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
使用撇号创建list
a='((1 2) (3 4) 5 6)
结果
((1 2)
    (3 4) 5 6
)

使用命令list来创建
a=list((1 2) (3 4) 5 6)
结果
E- *Error* eval: not a function - 1
ERROR

为什么使用撇号可以直接的创建?
  • TA的每日心情
    无聊
    2022-6-24 15:35
  • 签到天数: 2 天

    [LV.1]初来乍到

    2#
    发表于 2014-5-27 10:14 | 只看该作者
    本帖最后由 yneda 于 2014-5-27 10:16 编辑

    从字面上理解,()前面要一个函数名,语法错误? 比如list或带反回值的函数,改成这样是可以的:
    a = list(list(1 2) list(3 4) 5 6)
    =>((1 2) (3 4) 5 6)
    查了别人写的资料,有说当有字符出现的时候,用list创建的话,前面要加’
    比如:
    a = "abc"
    list(a)=>("abc")
    这里a是一个变量

    list('a)=>(a) 等同与 '(a)=>(a)
    这里a是一个字符

    至于两者的区别,还不是很明白,望有会的人讲解下。

    该用户从未签到

    3#
     楼主| 发表于 2014-5-27 10:45 | 只看该作者
    撇号 在 skill language user guide 内的第二章“skill 中的特殊符号”一章中的解释是“引用表达式而不是其值”
    用在变量前时还好理解
    Skill > a=1
    1
    Skill > b='a
    a
    Skill > b
    a
    Skill > a
    1
    Skill > eval(b)
    1
    但是用于创建list时就不是很理解了

    该用户从未签到

    4#
    发表于 2014-5-29 21:29 | 只看该作者
    l888888h 发表于 2014-5-27 10:45
    撇号 在 skill language user guide 内的第二章“skill 中的特殊符号”一章中的解释是“引用表达式而不是其 ...

    可以这样理解,'创建list时,是直接引用数值,例如'((1 2) (3 4) 5 6),其中的(1 2)在Skill中就是表示一个List实体

    使用List来创建时,会对元素进行eval求值,如你所写
    a=list((1 2) (3 4) 5 6)
    其中对(1 2)会进行eval求值操作,而(1 2)仅表示一个list实体,没办法进行eval求值,你可以试下以下代码,会有同样错误产生

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-23 05:17 , Processed in 0.093750 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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