明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 875|回复: 5

[已解答] 《菜鸟提问》求解释(if (=(cons 1000 "1")(cons 1000 "1")) 1 2)

[复制链接]
发表于 2015-7-31 15:47 | 显示全部楼层 |阅读模式
10明经币
  • (if (=(cons 1000 "1")(cons 1000 "1")) 1 2)
  • 为什么上面的命令结果是返回2呢?
  • 求解释

最佳答案

查看完整内容

在我看来,楼主是知道(=(cons 1000 "1")(cons 1000 "1"))返回的是NIL,所以if 表达式的返回结果才是2, 楼主的疑惑是= 后的两个表达式是一样的,为什么还返回nil ,这就是我在主贴上点评的 = (equal to)的参数只适用于数值型或字符串型,而(cons 1000 "1")返回的结果是表,所以这就是我在一楼还有三楼nzl1116大师所回答的要用equal 函数原因,equal 函数是可以比较表(list)的 (equal expr1 expr2 [fuzz]) expr1 expr2 Ty ...

点评

参数numstr 数值型或字符串型  发表于 2015-7-31 17:56
http://bbs.mjtd.com/thread-96199-1-1.html  发表于 2015-7-31 17:55
发表于 2015-7-31 15:47 | 显示全部楼层
本帖最后由 lucas_3333 于 2015-7-31 21:53 编辑
xiang19751218 发表于 2015-7-31 18:21
(if   [表示式2])   检算比较式结果,如果为真,执行否则,执行
由于比较式(=(cons 1000 "1")(cons 1000 "1") ...

在我看来,楼主是知道(=(cons 1000 "1")(cons 1000 "1"))返回的是NIL,所以if 表达式的返回结果才是2,
楼主的疑惑是= 后的两个表达式是一样的,为什么还返回nil ,这就是我在主贴上点评的  = (equal to)的参数只适用于数值型或字符串型,而(cons 1000 "1")返回的结果是表,所以这就是我在一楼还有三楼nzl1116大师所回答的要用equal 函数原因,equal 函数是可以比较表(list)

(equal expr1 expr2 [fuzz])
expr1  expr2
Type:
Integer, Real, String, List, Ename (entity name)

(= numstr [numstr ...])
numstr
Type: Integer, Real, or String
A number or string.


回复

使用道具 举报

发表于 2015-7-31 16:05 | 显示全部楼层
(if (equal (cons 1000 "1")(cons 1000 "1")) 1 2)
回复

使用道具 举报

发表于 2015-7-31 18:21 | 显示全部楼层
(if <比较式> <表示式1> [表示式2])   检算比较式结果,如果为真,执行<表示式1>否则,执行<表示式2>
由于比较式(=(cons 1000 "1")(cons 1000 "1"))返回NIL,所以上面的命令结果返回2

评分

参与人数 1明经币 +1 收起 理由
HGHG011 + 1

查看全部评分

回复

使用道具 举报

发表于 2015-7-31 19:26 | 显示全部楼层
因为条件表达式的值是nil,如果把函数=改成函数equal,那就返回1了。

评分

参与人数 1明经币 +1 收起 理由
HGHG011 + 1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2015-8-1 09:33 | 显示全部楼层
谢谢各位的帮忙,我就在此一并感谢了
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-4 21:46 , Processed in 0.241504 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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