我正在添加一个列表,当我使用MyArray|MyElement
打印到屏幕时,我得到:
[obj1,obj2] | 对象3
这是不正确的,是吗?理想情况下,我希望它是:
[Obj1,Obj2,Obj3]
如果我使用MyArray|[MyElement]
打印输出给我:
[Obj1,Obj2] | [对象3]
这相当于 [Obj1,Obj2,Obj3] 吗?
我正在添加一个列表,当我使用MyArray|MyElement
打印到屏幕时,我得到:
[obj1,obj2] | 对象3
这是不正确的,是吗?理想情况下,我希望它是:
[Obj1,Obj2,Obj3]
如果我使用MyArray|[MyElement]
打印输出给我:
[Obj1,Obj2] | [对象3]
这相当于 [Obj1,Obj2,Obj3] 吗?
使用语法[ MyElement | MyArray ]
,你会得到
[Obj3, Obj1, Obj2]
这就是所谓的将元素“consing”到列表中。您还可以使用append/3
谓词,如下所示:
append( MyArray, [MyElement], X).
产生
X = [Obj1, Obj2, Obj3]
想通了,这是因为我附加到列表的末尾,而尾部始终是一个数组....
我不知道我是否理解你的问题,但我会尽力提供帮助。
如果它适合你,试试这个:
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).