我加入列表,当我用MyArray|MyElement
我打印到屏幕上,我得到的元素(和分裂):列表添加
[OBJ1,OBJ2] | obj3
这是不正确的,是吗?理想情况下,我希望它是:
[OBJ1,OBJ2,OBJ 3]
如果我使用MyArray|[MyElement]
打印出来给我:
[OBJ1,OBJ2] | [Obj3]
这是相当于[Obj1,Obj2,Obj3]?
我加入列表,当我用MyArray|MyElement
我打印到屏幕上,我得到的元素(和分裂):列表添加
[OBJ1,OBJ2] | obj3
这是不正确的,是吗?理想情况下,我希望它是:
[OBJ1,OBJ2,OBJ 3]
如果我使用MyArray|[MyElement]
打印出来给我:
[OBJ1,OBJ2] | [Obj3]
这是相当于[Obj1,Obj2,Obj3]?
使用语法[ MyElement | MyArray ]
,你会得到
[Obj3, Obj1, Obj2]
这就是所谓的“包含”一个元素到列表中。你也可以使用一个append/3
断言,这样的:
append(MyArray, [MyElement], X).
产生
X = [Obj1, Obj2, Obj3]
想通了,它因为我追加到列表的末尾和尾部始终是一个数组....
我不知道如果我理解你的问题,但我会尽力帮助。
试试这个,如果你的作品:
add2end(X,[],[X]).
add2end(X,[H|T],[H|NewT]):-add2end(X,T,NewT).
而对于分裂:
分裂(L,N,L1,L2): - 列表L1中包含的第N个元素 列表L,列表L2包含剩余的元素。 (?,+,?,?)
split(L,0,[],L).
split([X|Xs],N,[X|Ys],Zs) :- N > 0, N1 is N - 1, split(Xs,N1,Ys,Zs).