我的代码根据值范围查找事实:
ara_deger_price(L,H,Res) :-
findall( (Id,B,C,D,Price,F,Points),
( table(Id,B,C,D,Price,F,Points),
\+ Price = null, \+ Price = 'Price', Price > L, Price < H
),
Res).
它给出如下列表结果:
?- ara_deger_price(200,250,X).
X = [ (284, 'Viña Cobos 2011 Marchiori Vineyard Block C2 Malbec (Perdriel)', 'Argentina', 'Malbec', 215, 'Michael Schachner', 92), (349, 'Torbreck 2012 RunRig Shiraz-Viognier (Barossa)', 'Australia', 'Shiraz-Viognier', 225, 'Joe Czerwinski', 97)] ;
false.
我想要做的是将此列表的每个元素添加到C#列表框中。我可以使用nth0 / 3访问元素,但是我想访问其中的每个元素。
我尝试过:
show_record([]).
show_record([A|B]) :- write(A), write("\n"), show_record(B).
在控制台中将每个元素打印到一行。我可以将结果从控制台重定向到列表框,还是可以访问Prolog中的每个元素?
答案 0 :(得分:0)
我解决了问题,却忘了更新。这是我用来解决问题的代码:
unwindToRoot
它从aralik_price(L,H,X):-ara_deger_price(L,H,Res), member(X,Res).
获取列表Res
,并找到每个成员,并用X变量将它们全部返回。在C#中,我可以通过简单地遍历X变量来获取所有成员。