【问题标题】:The switch function in clips剪辑中的切换功能
【发布时间】:2021-01-08 07:14:00
【问题描述】:

请询问“开关”功能。我想实现以下功能:

(switch ?student
  (case (stu1 or stu2 or stu3) then
   -------)
  (case stu4 then
   ------))

如何让多个选择执行相同的动作?

【问题讨论】:

    标签: function switch-statement artificial-intelligence clips expert-system


    【解决方案1】:

    如果在 case 关键字之后放置函数调用,则该函数调用必须返回 switch 关键字之后的值,以便应用 case 的操作。因此,您可以定义一个辅助函数,该函数在 switch 关键字之后传递值和应应用大小写的值列表。如果值在值之间,则只返回值并应用大小写。如果不是,则只需否定该值,然后将不会应用 case 语句的操作。

             CLIPS (6.31 6/12/19)
    CLIPS> 
    (deffunction oneof (?v $?values)
       (if (member$ ?v ?values)
          then ?v
          else (not ?v)))
    CLIPS>       
    (deffunction grade (?student)
       (switch ?student
          (case (oneof ?student stu1 stu2 stu3)
             then B-)
          (case stu4
             then A+)))
    CLIPS> (grade stu1)
    B-
    CLIPS> (grade stu2)
    B-
    CLIPS> (grade stu3)
    B-
    CLIPS> (grade stu4)
    A+
    CLIPS> 
    

    【讨论】:

    • “select case”在VB中有很方便的应用,那么,我想clips是否也有相应的功能。感谢 Gary Riley 老师的指导。
    猜你喜欢
    • 2021-12-04
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多