口齿不清的类

Classes in lisp

本文关键字:      更新时间:2023-10-16

我想用lisp定义一个类,它在c ++中非常简单,代码是这样的

    class intersection{
    int distance;
    int fuel;
    char node1;
    char node2;
};

我怎样才能用 Lisp 编写它并从中定义对象谢谢

使用 Common Lisp

对象系统,它是 ANSI Common Lisp 的一部分。

(defclass intersection-class ()
  ((distance :type integer)
   (fuel     :type integer)
   (node1    :type character)
   (node2    :type character)))
CL-USER 69 > (make-instance 'intersection-class)
#<INTERSECTION-CLASS 4020002C2B>

在 CLOS 中,最简单的形式是使用 defclass

(defclass intersection ()
  (distance
   fuel
   node1
   node2))

这不是一个类;它只是一个数据结构(在顶部添加public:或用struct替换class之前,它不是一个很有用的结构(。为此,您可以使用 a 列表。

我不知道你说的"从中定义对象"是什么意思。如果您的意思是"实例化它",那么创建一个 a 列表是相当简单的:'((distance . 10) (fuel . 85) (node1 . #a) (node2 . #z)) .

处理抽象的一种非常简单的方法是创建一个列表,其中类型在第一个元素中,数据在其余元素中,我将使用以下行来创建对象:

(list 'intersection distance fuel node1 node2)
如果你

想要一个"构造函数",像这样的东西

(defun createIntersection (d f n1 n2)
    (list 'intersection, d f n1 n2))
相关文章:
  • 没有找到相关文章