乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 80|回复: 10

[编程交流] 我需要一个额外的LISP更少

[复制链接]

7

主题

32

帖子

26

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:54:35 | 显示全部楼层 |阅读模式
大家好,
 
我正在寻找一个“跳转标记”或“转到函数”,但没有一个。
我需要简化我的代码,因为我不想编写程序,例如(程序1)、(程序2),。。。每个(progn)下两次,因为有相同的。
 
亲切的问候
蓝鸟1973
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 16:05:37 | 显示全部楼层
有很多不同的方法来实现这一点
 
  1. [b][color=BLACK]([/color][/b]while [b][color=FUCHSIA]([/color][/b]/= 0 checkPINstate[b][color=FUCHSIA])[/color][/b]
  2.         [b][color=FUCHSIA]([/color][/b]requestPIN[b][color=FUCHSIA])[/color][/b]
  3.         [b][color=FUCHSIA]([/color][/b]checkPINstate[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]
  4. [b][color=BLACK]([/color][/b]program1[b][color=BLACK])[/color][/b]
  5. [b][color=BLACK]([/color][/b]program2[b][color=BLACK])[/color][/b]

 
这将强制执行正确的PIN,只留下esc作为备用出口(可能不是最优雅或最佳的解决方案)
 
-大卫
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:10:29 | 显示全部楼层
我的2c。。。
  1. (cond ((and (/= 0 checkpinstate) (requestpin) (= checkpin inputpin)) (program 1) (program 2))
  2.      ((program 1) (program 2))
  3. )
回复

使用道具 举报

7

主题

32

帖子

26

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:17:29 | 显示全部楼层
嗨,大卫,
嗨,ronjonp,
 
谢谢你的尝试,但没有成功。
 
亲切的问候
蓝鸟1973
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:24:17 | 显示全部楼层
 
在上面的例子中,(program1)和(program2)将始终运行,所以不确定您将使用它去哪里?
 
也许:
  1. (cond ;; Pin already validated .. run programs
  2.      ((= 0 checkpinstate) (program 1) (program 2))
  3.      ;; Pin not validated, get the pin, if pin checks out then run programs
  4.      ((and (requestpin) (= checkpin inputpin)) (program 1) (program 2))
  5. )
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 16:25:27 | 显示全部楼层
如果(requestpin)asigns一个全局变量“checkpinstate”,那么函数本身返回nil。
 
另一个2c。。
  1. (if (member checkpinstate '(nil 0)) (requestpin))
  2. (cond ( (and checkpinstate (/= 0 checkpinstate)) (program1) (program2) ))

 
 
当请求提示时,复制粘贴方法并不总是适用于示例。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:33:10 | 显示全部楼层
也许:
  1. (cond
  2. ;; Pin already validated .. run programs
  3. ((= "0" (getenv "checkpinstate")) (program 1) (program 2))
  4. ;; Pin not validated, get the pin, if pin checks out set the 'checkpinstate' variable then run programs
  5. ((and (requestpin) (= checkpin inputpin)) (setenv "checkpinstate" "0") (program 1) (program 2))
  6. )

 
当其中的1/2需要读心术时,很难找到解决方案。
回复

使用道具 举报

7

主题

32

帖子

26

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:42:03 | 显示全部楼层
我现在找到了一个解决方案。
 
 
  1. [color=RED]([/color][color=BLUE]progn[/color]
  2.   [color=RED]([/color][color=BLUE]cond[/color]
  3.      [color=RED]([/color]
  4.         [color=RED]([/color][color=BLUE]/=[/color] [color=#009900]0[/color] checkPINstate[color=RED])[/color]
  5.            [color=RED]([/color][color=BLUE]progn[/color]
  6.               [color=RED]([/color]requestPIN[color=RED])[/color]
  7.               [color=RED]([/color][color=BLUE]cond[/color]
  8.                [color=RED]([/color]
  9.                  [color=RED]([/color][color=BLUE]/=[/color] checkPIN inputPIN[color=RED])[/color]
  10.                     [color=RED]([/color][color=BLUE]progn[/color]
  11.                      [color=RED]([/color][color=BLUE]princ[/color] [color=#a52a2a]"\nError: bad argument pw"[/color][color=RED])[/color]
  12.                      [color=RED]([/color][color=BLUE]exit[/color][color=RED])[/color]
  13.                      [color=RED])[/color]
  14.                [color=RED])[/color]
  15.               [color=RED])[/color]
  16.            [color=RED])[/color]
  17.      [color=RED])[/color]
  18.   [color=RED])[/color]
  19.   [color=RED]([/color][color=BLUE]if[/color] [color=RED]([/color][color=BLUE]=[/color] [color=BLUE]Prog[/color] checkProg[color=RED])[/color]
  20.      [color=RED]([/color][color=BLUE]progn[/color]
  21.         [color=RED]([/color][color=BLUE]cond[/color]
  22.            [color=RED](([/color]program [color=#009900]1[/color][color=RED]))[/color]
  23.            [color=RED](([/color]program [color=#009900]2[/color][color=RED]))[/color]
  24.            [color=RED](([/color]program [color=#009900]3[/color][color=RED]))[/color]
  25.            [color=DARKRED].[/color][color=DARKRED].[/color][color=DARKRED].[/color]

 
 
亲切的问候
蓝鸟1973
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:47:16 | 显示全部楼层
不管好坏这将在没有混乱出口的情况下完成同样的事情。
  1. ;; Assumes that your (requestpin) actually returns something
  2. (if (or (= 0 checkpinstate) (and (requestpin) (/= checkpin inputpin) (= prog checkprog)))
  3. (progn (program 1) (program 2) (program 3))
  4. (princ "\nError: bad argument pw")
  5. )
回复

使用道具 举报

7

主题

32

帖子

26

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:53:10 | 显示全部楼层
嗨,ronjonp,
 
是的,你说得对。
这确实是更好的方法。
 
谢谢你的课!!!
 
亲切的问候
蓝鸟1973
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 21:02 , Processed in 0.652943 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表