剪辑中的切换功能

问题描述

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

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

如何使多个选择执行相同的操作?

解决方法

如果将函数调用放在case关键字之后,则该函数调用必须返回switch关键字之后的值,以便应用案例的操作。因此,您可以定义一个辅助函数,该函数将在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> 

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...