2

我正在添加一个列表,当我使用MyArray|MyElement打印到屏幕时,我得到:

[obj1,obj2] | 对象3

这是不正确的,是吗?理想情况下,我希望它是:

[Obj1,Obj2,Obj3]

如果我使用MyArray|[MyElement]打印输出给我:

[Obj1,Obj2] | [对象3]

这相当于 [Obj1,Obj2,Obj3] 吗?

4

3 回答 3

2

使用语法[ MyElement | MyArray ],你会得到

[Obj3, Obj1, Obj2]

这就是所谓的将元素“consing”到列表中。您还可以使用append/3谓词,如下所示:

append( MyArray, [MyElement], X).

产生

X = [Obj1, Obj2, Obj3]
于 2012-08-12T16:33:07.543 回答
1

想通了,这是因为我附加到列表的末尾,而尾部始终是一个数组....

于 2012-08-12T16:32:08.393 回答
0

我不知道我是否理解你的问题,但我会尽力提供帮助。

如果它适合你,试试这个:

add2end(X,[],[X]).
add2end(X,[H|T],[H|NewT]):-add2end(X,T,NewT).

对于拆分:

split(L,N,L1,L2) :- 列表 L1 包含列表 L 的前 N ​​个元素,列表 L2 包含其余元素。(列表,整数,列表,列表) (?,+,?,?)

split(L,0,[],L).
split([X|Xs],N,[X|Ys],Zs) :- N > 0, N1 is N - 1, split(Xs,N1,Ys,Zs).
于 2012-08-17T17:50:15.647 回答