我很确定自己声明的事实,如下:
@Injectable()
export class customInterceptor implements HttpInterceptor {
constructor() {
}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).pipe(
tap((event: HttpEvent<any>) => {
}, (err: any) => {
if (err instanceof HttpErrorResponse) {
if (err.status === 403 || err.status === 401) {
// DO SOMETHING HERE.
}
}
}
)
);
}
}
当我尝试使用hoof(tony).
hoof(tim).
hoof(ellen).
hoof(X) :- skier(X); climber(X).
not(likes(X, rain)) :- climber(X).
likes(X, snow) :- skier(X).
likes(tony, X) :- \+likes(ellen, X).
likes(ellen, X) :- \+likes(tony, X).
likes(tony, rain).
likes(tony, snow).
查询时,它返回并显示以下错误消息:
hoof(X), climber(X), \+skier(X).
我在这里想念什么?
答案 0 :(得分:1)
您没有climber/1
的任何子句,因此Prolog运行时不知道该谓词。因此,查询的谓词存在错误。一种可能的解决方案是将谓词(如skier/1
和climber/1
声明为 dynamic :
:- dynamic([climber/1, skier/1]).
此伪指令将谓词声明为运行时,通知其可以在运行时修改谓词。这将使您的查询失败,而不是引发异常。