我想在lisp中定义一个类,在c ++中非常简单,代码就是这样的
class intersection{
int distance;
int fuel;
char node1;
char node2;
};
我如何在lisp中编写它并从中定义对象 谢谢
答案 0 :(得分:2)
使用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>
答案 1 :(得分:1)
在CLOS中,以最简单的形式,您使用defclass
:
(defclass intersection ()
(distance
fuel
node1
node2))
答案 2 :(得分:-1)
那不是一个阶级;它只是一个数据结构(在您在顶部添加public:
或用class
替换struct
之前,它不是非常有用的数据结构。您可以使用a-list来实现此目的。
我不知道“你从中定义对象”是什么意思。如果你的意思是“实例化它”,那么创建一个列表是相当简单的:'((distance . 10) (fuel . 85) (node1 . #\a) (node2 . #\z))
。
答案 3 :(得分:-1)
一种处理抽象的一种非常简单的方法是创建一个列表,其中包含第一个元素中的类型和其余的数据,我会沿着这些行使用某些东西来创建一个对象:
(list 'intersection distance fuel node1 node2)
如果你想要一个“构造函数”
,那就是这样的(defun createIntersection (d f n1 n2)
(list 'intersection, d f n1 n2))