我需要像这样闷闷不乐:
if(list.contains(var)){
//do something
}else if(list.contains(anotherVar1)){
//do something
}else if(list.contains(anotherVar2)){
//do something
}else if(list.contains(anotherVar3)){
//do something
}else{
// do something
}
修改
if(list1.contains(var)){
//do something
}else if(list2.contains(var)){
//do something
}else if(list3.contains(var)){
//do something
}else if(list4.contains(var)){
//do something
}else{
// do something
}
我试过了,但else
从未发生过:
((member(C,L1)-> print('first'));
(member(C,L2)-> print('second'));
(member(C,L3)-> print('third'));
(member(C,L4)-> print('fourth')));
(print('else')).
C是一个元素,我正在检查它是否是任何列表的成员
答案 0 :(得分:1)
你的c式原始代码需要使用列表和一些元素,所以我想在你的Prolog示例中,C
是列表而L1
,{{1} },L2
和L3
是元素。
但据我所知,SWI-Prolog中的L4
子句需要第一个位置的元素和第二个位置的列表。
所以我想,调用member/2
,你应该用元素切换列表,所以
memeber/2
答案 1 :(得分:0)
我确认了Coredump所说的内容:你打印代码打印"否则"。
打印到很多"否则"。
我已经尝试了
wichList(C, L1, L2, L3, L4) :-
((member(C,L1)-> print('first'));
(member(C,L2)-> print('second'));
(member(C,L3)-> print('third'));
(member(C,L4)-> print('fourth')));
(print('else')).
并且,呼叫wichList(1, [], [], [], [])
,我看到"否则"。
无论如何,你的代码是错误的,因为调用wichlist(1, [], [1], [], [])
,我看到"第二个",一开始,"否则",下一个。
这是一个括号问题:你应该关闭&#34的括号;如果"在print('else')
之后,而不是之前,所以
wichList(C, L1, L2, L3, L4) :-
((member(C,L1)-> print('first'));
(member(C,L2)-> print('second'));
(member(C,L3)-> print('third'));
(member(C,L4)-> print('fourth'));
(print('else'))).