我如何比较传递给函数的变量和 CLIPS 中的字符串?
How can I compare a variable that is passed to a function with a string in CLIPS?
当我尝试将变量与字符串进行比较时,出现错误。我试图将它与 (= ?a "s")
.
进行比较
这是产生错误的完整代码示例:
(deffunction cierto (?a)
(if (= ?a "s")
then
(printout t TRUE crlf)
else
(printout t FALSE crlf)
)
)
错误:
Defining deffunction: cierto
[ARGACCES5] Function = expected argument #2 to be of type integer or float
ERROR:
(deffunction MAIN::cierto
(?a)
(if (= ?a "s")
FALSE
(deffunction cierto (?a)
(if (eq ?a "s")
then
(printout t TRUE crlf)
else
(printout t FALSE crlf)
)
)
(= ) 用于比较数字(INTEGER 或 FLOAT)是否相等。
- (= 3 3.0) 为真
- (= 3 3) 为真
- (= s s) 错误,s 不是数字
(eq ) 用于原始值的比较以及类型的比较)
- (eq 6 6.0) 为 FALSE,不同类型(INTEGER 与 FLOAT)
- (eq 6 6) 为真,相同类型相同值 (INTEGER INTEGER)
- (eq si "si") 为 FALSE,不同类型(SYMBOL 与 STRING)
- (eq si si) 为真,类型相同,值相同 (SYMBOL SYMBOL)
- (eq "si" "si") 为真,相同类型相同值 (STRING STRING)
基本编程指南中的更多信息(第 12 部分:操作和函数)
选择:
(deffunction cierto2 (?a)
(printout t (eq ?a "s") crlf)
)
你还用 SYMBOL 代替 STRING "s"。
当我尝试将变量与字符串进行比较时,出现错误。我试图将它与 (= ?a "s")
.
这是产生错误的完整代码示例:
(deffunction cierto (?a)
(if (= ?a "s")
then
(printout t TRUE crlf)
else
(printout t FALSE crlf)
)
)
错误:
Defining deffunction: cierto
[ARGACCES5] Function = expected argument #2 to be of type integer or float
ERROR:
(deffunction MAIN::cierto
(?a)
(if (= ?a "s")
FALSE
(deffunction cierto (?a)
(if (eq ?a "s")
then
(printout t TRUE crlf)
else
(printout t FALSE crlf)
)
)
(= ) 用于比较数字(INTEGER 或 FLOAT)是否相等。
- (= 3 3.0) 为真
- (= 3 3) 为真
- (= s s) 错误,s 不是数字
(eq ) 用于原始值的比较以及类型的比较)
- (eq 6 6.0) 为 FALSE,不同类型(INTEGER 与 FLOAT)
- (eq 6 6) 为真,相同类型相同值 (INTEGER INTEGER)
- (eq si "si") 为 FALSE,不同类型(SYMBOL 与 STRING)
- (eq si si) 为真,类型相同,值相同 (SYMBOL SYMBOL)
- (eq "si" "si") 为真,相同类型相同值 (STRING STRING)
基本编程指南中的更多信息(第 12 部分:操作和函数)
选择:
(deffunction cierto2 (?a)
(printout t (eq ?a "s") crlf)
)
你还用 SYMBOL 代替 STRING "s"。