我正在制作一些教程,目前仍然坚持这个:
<a class="project-link" href="#modal1" id="one" style="margin-right:25px;">Modurra Shelving </a>
<div class="remodal" data-remodal-id="modal1">
<div class="dar">Darrien Tu.</div>
<button class="remodal-close" data-remodal-action="close"></button>
<div class="anchor-point">sdfsfs</div>
<div class="title">
<p class="projectTitle">Modurra
<br>Shelving.</p>
</div>
</div> <a class="project-link" href="#modal2" id="one" style="margin-right:25px;">Other stuff </a>
<div class="remodal" data-remodal-id="modal2">
<div class="dar">Darrien Tu.</div>
<button class="remodal-close" data-remodal-action="close"></button>
<div class="anchor-point">sdfsfs</div>
<div class="title">
<p class="projectTitle">Modurra
<br>Shelving.</p>
</div>
</div>
运算符是一元一元的前缀运算符,用于检查其列表
操作数只有一个元素。
例如:
var scrollFn = function () {
var targetOffset = $(this).find(".anchor-point")[0].offsetTop;
console.log('Scrolling...');
if ($(this).scrollTop() > targetOffset) {
$(this).find(".projectTitle").addClass("topper");
} else {
$(this).find(".projectTitle").removeClass("topper");
}
};
$('.remodal').scroll(scrollFn);
如何让运算符检查列表是否包含一个变量? 感谢
答案 0 :(得分:1)
functor([1,2,3],F,A).
发出上述查询会将F
与'.'
和A
统一为2。
因此,列表是由二进制术语.(Head,Tail)
表示的典型cons-cell,其中Head
是元素,Tail
是子列表。我们还可以使用=../2
谓词来构造列表:
[1,2,3] =.. X.
以上X
与[., 1, [2, 3]]
取消联系。如果我们在单例列表中应用相同的方法,那么我们就有了:
[1] =.. X.
X = [., 1, []]
Yes.
空列表用[]
表示,它是一个名为"[]"
的原子。
知道了以上所有内容,我们只使用基本的Prolog点项来生成列表:
.(A,.(B,[])) = [A,B].
Yes
如上所述,括号表示法是./2
的语法糖,而且......
[H1, …, Hn | T ]
...代表
.(H1,( … .(Hn, T) … ))
特别是&#34; | T
&#34; T
为空列表[]
时可以省略。这就是为什么可以编写[a,b,c]
来表示.(a,.(b,.(c,[])))
列表的原因。
包含元素V
的单例列表由[V]
表示,代表.(V,[])
。在您的评论中,您做得对的是运营商声明:
:- op(500, fy, isSingleton).
你添加了一个无用的&#34; |[]
&#34;与空尾一致,但isSingleton [_X|[]]
失败的原因是因为没有定义这样的谓词。您当然可以将其写入文件并加载它,但由于您只需要一个简单的子句,您也可以使用compile_term/1
:
compile_term(isSingleton([_])).
根据定义,isSingleton
当且仅当其第一个参数可以与尾部为空的列表统一时才会成功。我们不关心它的头部,这解释了匿名_
变量(您的原始_X
添加了很少的信息,但也是正确的)。最后,以下工作:
isSingleton [3].
Yes.