乐筑天下

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

[编程交流] initget是否

[复制链接]

55

主题

243

帖子

188

银币

后起之秀

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

铜币
275
发表于 2022-7-6 10:27:26 | 显示全部楼层 |阅读模式
嗨,有人可以修改我的代码吗。我想我很接近了。我还想让它适用于用户只键入字母“n”或“n”表示否,键入字母“y”或“y”表示是的情况。
谢谢
 
  1. (defun c:YesNo (/ ans)
  2. (initget "YES yes NO no")
  3. (setq ans (strcase (getstring "\nYes or No: ")
  4. (cond
  5. ((eq ans "No")
  6. (alert "\nYou selected 'No'")
  7. )
  8. ((eq ans "Yes")
  9. (alert "\nYou selected 'Yes'")
  10. )
  11. );cond
  12. (princ)
  13. );defun
回复

使用道具 举报

4

主题

940

帖子

961

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 10:47:07 | 显示全部楼层
  1. (defun c:YesNo (/ ans)
  2. (initget 1 "Yes No")
  3. (setq ans (getkword "\nYes or No: "))
  4. (cond
  5. ((eq ans "No")
  6. (alert "\nYou selected 'No'")
  7. )
  8. ((eq ans "Yes")
  9. (alert "\nYou selected 'Yes'")
  10. )
  11. );cond
  12. (princ)
  13. );defun

 
在开发者帮助中查找getkword,其中的示例与您的几乎相同
回复

使用道具 举报

55

主题

243

帖子

188

银币

后起之秀

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

铜币
275
发表于 2022-7-6 10:54:44 | 显示全部楼层
谢谢ipseifert
所以是getword而不是getstring!
我遵循了getstring的示例,但getword似乎是一个更简单的选项
干杯,旧金山
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:01:01 | 显示全部楼层
前一段时间我在这里发布了一些信息:
 
  1. ;; Initget / GetK(ey)word Examples
  2. ;; © Lee Mac 2010
  3. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4. ;; Note 1: On Prompt String Format
  5. ;; In all examples, to achieve correct display
  6. ;; when DYNamic Input (DYNMODE=1) is enabled,
  7. ;; prompt string must be formatted thus:
  8. ;; [Option1/Option2/Option3]
  9. ;; Or, with default:
  10. ;; [Option1/Option2/Option3] <Option1>
  11. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  12. ;; Note 2: On Global Variable Format
  13. ;; In all examples utilising global variables
  14. ;; asterisks are included in variable names to decrease
  15. ;; risk of variable names clashing with unlocalised variables
  16. ;; from other programs. Asterisks are used for no other purpose.
  17. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  18. ;; 1. Force User Input (initget bit 1)
  19. (initget 1 "Alpha Beta Gamma")
  20. (setq ans (getkword "\nChoose [Alpha/Beta/Gamma]: "))
  21. ;; User must select a choice to continue, else
  22. ;; Esc must be used to cancel evaluation
  23. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  24. ;; 2. Preset Default (Alpha)
  25. ;; a)
  26. (initget "Alpha Beta Gamma")
  27. (setq ans (cond ( (getkword "\nChoose [Alpha/Beta/Gamma] <Alpha>: ") ) ( "Alpha" )))
  28. ;; b)
  29. (initget "Alpha Beta Gamma")
  30. (setq ans (getkword "\nChoose [Alpha/Beta/Gamma] <Alpha>: "))
  31. (if (not ans) (setq ans "Alpha"))
  32. ;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  33. ;; 3. Dynamic Default (utlisation of Global Variable: *ans*)
  34. ;; a)
  35. (or *ans* (setq *ans* "Alpha"))
  36. (initget "Alpha Beta Gamma")
  37. (setq *ans*
  38. (cond
  39.    (
  40.      (getkword
  41.        (strcat "\nChoose [Alpha/Beta/Gamma] <" *ans* ">: ")
  42.      )
  43.    )
  44.    ( *ans* )
  45. )
  46. )
  47. ;; b)
  48. (if (not *ans*) (setq *ans* "Alpha"))
  49. (initget "Alpha Beta Gamma")
  50. (setq *ans*
  51. (cond
  52.    (
  53.      (getkword
  54.        (strcat "\nChoose [Alpha/Beta/Gamma] <" *ans* ">: ")
  55.      )
  56.    )
  57.    ( *ans* )
  58. )
  59. )
  60. ;; c)
  61. (initget "Alpha Beta Gamma")
  62. (setq *ans*
  63. (cond
  64.    (
  65.      (getkword
  66.        (strcat "\nChoose [Alpha/Beta/Gamma] <"
  67.          (setq *ans*
  68.            (cond ( *ans* ) ( "Alpha" ))
  69.          )
  70.          ">: "
  71.        )
  72.      )
  73.    )
  74.    ( *ans* )
  75. )
  76. )
回复

使用道具 举报

55

主题

243

帖子

188

银币

后起之秀

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

铜币
275
发表于 2022-7-6 11:16:34 | 显示全部楼层
谢谢李-这将是一个有用的“如何”未来的参考
旧金山
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 11:18:51 | 显示全部楼层
首先,initget对getstring根本不起作用。您只能准确地获得用户使用getstring键入的内容,如果您添加(getstring T“…”)用户需要按Enter键,这样字符串甚至可以包含空格。您可以通过检查getstring调用后输入的文本来执行类似的操作。您可以使用通配符匹配和大小写转换,例如,如果用户键入y或y或yE或YO。。。。。或者调用(wcmatch(strcase ans)“Y*”)将返回T。。。只要文本以大写或小写Y开头就可以了。您可以进一步检查以Y开头的字母,YE然后YES:(wcmatch(strcase ans)“Y,YE,YES”)。然而,用户可能仍然会输入一些奇怪的信息,比如“Maybe”。。。在这种情况下,wcmatch行将返回nil。。。i、 e.“否”???这对吗???如果没有,那么您需要再次询问用户,直到他们键入了可以接受的内容,在这种情况下,getkword(连同initget)可以为您完成所有这些。
 
大多数其他人。。。。函数与initget一起工作(在较小或更大的程度上-请参阅开发人员帮助),即使entsel、entsel和entselp也至少与关键字一起工作。但是如果你只想从用户那里获得一些文本输入,但只需要强制输入一些单词,那么getKword(注意它不是getword,它是get关键字的缩写)是你最好的选择。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:34:16 | 显示全部楼层
不客气,小鱼
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 20:51 , Processed in 1.147498 second(s), 66 queries .

© 2020-2025 乐筑天下

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