自贡黄明儒 发表于 2024-9-2 15:30:34

lisp所有语句,都有输入(这个可以没有)、过程、输出。输出或者叫返回值吧,只有(princ)特殊,没有返回值,记住就可以了。

moranyuyan 发表于 2024-9-2 22:07:01

muwind 发表于 2024-9-1 21:44
我们使用(princ xx)就是为了打印或者说将XX显示在屏幕上,
不仅princ,基本上任何函数包括自定义函数都 ...

嗯,讲得好,但是我还是没明白我截图中的代码末尾为什么要加(princ)。

moranyuyan 发表于 2024-9-2 22:08:07

自贡黄明儒 发表于 2024-9-2 15:30
lisp所有语句,都有输入(这个可以没有)、过程、输出。输出或者叫返回值吧,只有(princ)特殊,没有返回值, ...

我还是没明白我截图中的代码末尾为什么要加(princ)。

muwind 发表于 2024-9-2 23:28:03

自贡黄明儒 发表于 2024-9-2 15:30
lisp所有语句,都有输入(这个可以没有)、过程、输出。输出或者叫返回值吧,只有(princ)特殊,没有返回值, ...

有些函数可以没有输入 ,但有输出
比如 + 之类的运算符如果什么都没有 返回的就是0,
逻辑运算符最好玩
(and)返回T
(or)返回nil
:lol

tryhi 发表于 2024-9-3 10:11:58

moranyuyan 发表于 2024-9-2 22:08
我还是没明白我截图中的代码末尾为什么要加(princ)。
你不加试一下不就知道为什么了

tryhi 发表于 2024-9-3 10:14:57

本帖最后由 tryhi 于 2024-9-3 10:28 编辑

自贡黄明儒 发表于 2024-9-2 15:30
lisp所有语句,都有输入(这个可以没有)、过程、输出。输出或者叫返回值吧,只有(princ)特殊,没有返回值, ...
(princ)也是有返回值的,返回值是一个符号,这个符号是空字符串

(vl-symbol-name (princ));此句可以看出princ返回值是一个符号

甚至我们可以用保留函数自己定义一个跟princ一样不打印并且看起来似乎无返回的函数

;;定义一个跟princ一样"无返回值"的函数
(defun notprinc (/ b)
      (setq b a)
      (string-elt<- "a" 0 0)
      b
)
(notprinc)



饼仲郎 发表于 2024-9-3 10:25:52

你写个代码跑一下不就知道区别了,谜底就在谜面上。

moranyuyan 发表于 2024-9-3 11:09:06

tryhi 发表于 2024-9-3 10:11
你不加试一下不就知道为什么了

我试了,加和不加在命令行看不出区别,最后都显示为:【填充拉伸】己加载,命令:ss
所有我就纳闷加(princ)的作用时啥。

moranyuyan 发表于 2024-9-3 11:10:08

饼仲郎 发表于 2024-9-3 10:25
你写个代码跑一下不就知道区别了,谜底就在谜面上。

我试了,加和不加在命令行看不出区别。

tryhi 发表于 2024-9-3 11:25:39

moranyuyan 发表于 2024-9-3 11:09
我试了,加和不加在命令行看不出区别,最后都显示为:【填充拉伸】己加载,命令:ss
所有我就纳闷加(pri ...

那就不是在最后,或者不是最后加载,或者你看漏了,最后的话会显示两句重复一样的提示
页: 1 [2] 3 4
查看完整版本: lisp代码最后都写一句”(princ)“,它的作用是什么?