如果-条件(我需要addi
你好谁能帮我解决这个问题?
(if (= "UserName" (strcase (getvar 'loginname)))
...
我想在这里添加一些其他用户名
(if (= (or "UserName1" "UserName2" "...") (strcase (getvar 'loginname)))
但这不起作用。
我该怎么办?
亲切的问候
蓝鸟1973 (cond ((wcmatch (strcase (getvar 'loginname)) "USERNAME,USERNAME1,USERNAME2,USERNAME3"))
(code)
)
请注意,=和wcmatch是区分大小写的,因此上面的示例在登录名上使用strcase是行不通的。 您也可以使用(member),但它也区分大小写
(if (member (strcase (getvar 'loginname))
'("USERNAME" "USERNAME1" "USERNAME2" "USERNAME3"))
(YadaYada))
-大卫 或
(if (vl-position (strcase (getvar 'loginname)) '("USERNAME" "USERNAME1" "USERNAME2"))
(...)
)
谢谢大家!!!
差距缩小!
... 当然还有ronjonp和David。。。区分大小写。。。用户名不是用户名。。。
亲切的问候
蓝鸟1973 如果您真的想使用或,根据您最初的示例:
(setq usr (strcase (getvar 'loginname)))
(if (or (= "USER1" usr)
(= "USER2" usr)
(= "USER3" usr)
)
...
)
但在这种情况下,我也可能使用member/wcmatch。 和这里的人玩得很开心,所以我使用了一个cond,因为每个用户都得到了不同的响应,wcmatch只会给出一个找到的匹配的答案。 你也可以通过像这样的ASSOC来实现这一点:
(cdr (assoc "USERNAME2"
'(("USERNAME1" . "Message1") ("USERNAME2" . "Message2") ("USERNAME3" . "Message3"))
)
)
) 或者使用递归Or,其工作原理与vl-some相同:
(defun _or ( f L ) (if L (if (not (f (car L))) (_or f (cdr L)) t)))
(_or '((x) (= "User2" x)) '("User1" "User2" "User3"))
顺便说一句,这是一个较短的,但我试图避免或:
(defun _or ( f L ) (if L (or (f (car L)) (_or f (cdr L))))) 怎么样:
(defun _or ( f l )
(cond ((not l) nil) ((f (car l))) ((_or f (cdr l))))
)
页:
[1]
2