我只想弄清楚如何检查一个列表是否为空,我把一些检查列表长度的东西放在一起,另外还要检查列表是否为空。
% Gives the length of a list.
listlength([] , 0 ).
listlength([_|Xs] , L ):-
listlength(Xs,N),
L is N+1.
% checks to see that the length of the list is greater than or equal to 3 and not empty.
check_length( [] ).
check_length( L ):-
listlength(L, Len),
Len >= 3,
L \== []. %This is the bit of code I'm having problems with
it should be false if the list is just [] or empty.
我是学生,所以我不一定需要一个直接的答案我只是想弄清楚我做错了什么。
答案 0 :(得分:4)
您不需要明确测试L是否为空列表;它的长度> 0确立了。
您已经知道如何测试列表不为空,因为您在var Promise = require('bluebird');
var getRequest = Promise.promisify(require('http').get);
this.addMenu = function(currentMerchant) {
var id = currentMerchant.id;
function getMenu(id) {
var deferred = Q.defer();
var url = 'https://api.delivery.com/merchant/'+id+'/menu?client_id=xyz';
return getRequest(url);
}
this.data.menu = getMenu(id)
.then(function(response) {
return JSON.parse(response.body);
})
.catch(function (err){
console.log("Something went wrong with menu GET request: " + err);
});
console.log(this.data.menu);
};
中使用了它:listLength
(即L=[_|_]
是一个至少包含1个元素的列表)。
答案 1 :(得分:1)
问题是“如何检查列表是否为空”。根据定义,空列表是没有元素的列表,即[]列表。您只需检查一下您的列表是否与之结合即可。
答案 2 :(得分:1)
另一种选择,如果您的使用范围有限:
is_empty(List):- not(member(_,List)).
检查给定列表中是否有成员,并返回否定值。
[]
=>没有成员,为空。
[foo]
=>成员存在,不为空。
答案 3 :(得分:0)
router.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "http://localhost:3000");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With,
Content-Type, Accept, pwd, email");
next();
});
答案 4 :(得分:0)
对我有用的是:
empty_List(List):-列表= []。