乐筑天下

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

[编程交流] 如果-条件(我需要addi

[复制链接]

7

主题

32

帖子

26

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:49:15 | 显示全部楼层 |阅读模式
你好
 
谁能帮我解决这个问题?
 
  1. (if (= "UserName" (strcase (getvar 'loginname)))
  2. ...

 
我想在这里添加一些其他用户名
 
  1. (if (= (or "UserName1" "UserName2" "...") (strcase (getvar 'loginname)))

 
但这不起作用。
 
我该怎么办?
 
亲切的问候
蓝鸟1973
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 15:59:44 | 显示全部楼层
  1. (cond ((wcmatch (strcase (getvar 'loginname)) "USERNAME,USERNAME1,USERNAME2,USERNAME3"))
  2.      (code)
  3. )

 
请注意,=和wcmatch是区分大小写的,因此上面的示例在登录名上使用strcase是行不通的。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 16:03:40 | 显示全部楼层
您也可以使用(member),但它也区分大小写
  1. (if (member (strcase (getvar 'loginname))
  2.           '("USERNAME" "USERNAME1" "USERNAME2" "USERNAME3"))
  3.    (YadaYada))

 
-大卫
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:08:34 | 显示全部楼层

 
  1. (if (vl-position (strcase (getvar 'loginname)) '("USERNAME" "USERNAME1" "USERNAME2"))
  2.   (...)
  3. )
回复

使用道具 举报

7

主题

32

帖子

26

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:12:42 | 显示全部楼层
谢谢大家!!!
 
差距缩小!
 
... 当然还有ronjonp和David。。。区分大小写。。。用户名不是用户名。。。
 
亲切的问候
蓝鸟1973
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:17:19 | 显示全部楼层
如果您真的想使用或,根据您最初的示例:
  1. (setq usr (strcase (getvar 'loginname)))
  2. (if (or (= "USER1" usr)
  3.        (= "USER2" usr)
  4.        (= "USER3" usr)
  5.    )
  6.    ...
  7. )

 
但在这种情况下,我也可能使用member/wcmatch。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:25:16 | 显示全部楼层
和这里的人玩得很开心,所以我使用了一个cond,因为每个用户都得到了不同的响应,wcmatch只会给出一个找到的匹配的答案。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:30:41 | 显示全部楼层
你也可以通过像这样的ASSOC来实现这一点:
  1. (print
  2. (cdr (assoc "USERNAME2"
  3.       '(("USERNAME1" . "Message1") ("USERNAME2" . "Message2") ("USERNAME3" . "Message3"))
  4.       )
  5. )
  6. )
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:33:31 | 显示全部楼层
或者使用递归Or,其工作原理与vl-some相同:
  1. (defun _or ( f L ) (if L (if (not (f (car L))) (_or f (cdr L)) t)))
  1. (_or '((x) (= "User2" x)) '("User1" "User2" "User3"))

 
 
顺便说一句,这是一个较短的,但我试图避免或:
  1. (defun _or ( f L ) (if L (or (f (car L)) (_or f (cdr L)))))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:40:05 | 显示全部楼层
怎么样:
  1. (defun _or ( f l )
  2.    (cond ((not l) nil) ((f (car l))) ((_or f (cdr l))))
  3. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 13:08 , Processed in 0.632337 second(s), 72 queries .

© 2020-2025 乐筑天下

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