我正在制作一个递归的lisp函数,它接受两个列表并生成索引对的子列表
例如:投入(ABCD)和(1 2 3 4)并获得((1 A)(2 B)(3 C)(4 D))
但是,我在使用汽车和缺点制作上述子列表时遇到了麻烦.这是我的代码:
(DEFUN zipper (a b)
(if (= (OR (list-length a) (list-length b)) 0)
(setq c NIL)
(progn (zipper (cdr a) (cdr b))
(cons '((car a) (car b)) c))
)
)
Run Code Online (Sandbox Code Playgroud)
我玩了一下,似乎用汽车创建列表大部分时间都不起作用.另外,我正在使用CLISP.有任何想法吗?
谢谢!
我正在通过 firebase 中的一些孩子循环查看某个键的值是否存在,并且在我的 addListenerForSingleValueEvent 函数中找到了该键并将全局布尔值设置为 true。但是,在函数之后,变量被设置为false,因此程序不会进入第二个if语句。
referenceClasses.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
if (snapshot.getKey().compareTo(combinedString) == 0) {
found = true;
break;
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) { }
});
if(found) {
//...
}
Run Code Online (Sandbox Code Playgroud)
我知道通过对我的数据库的各种输入,在 addListenerForSingleValueEvent 中 find 设置为 true 。布尔值被实例化为
boolean found;
Run Code Online (Sandbox Code Playgroud)
全局,在任何其他函数之前。我什至尝试实现两个函数,一个设置布尔值,另一个返回它,但我最终得到相同的结果,布尔值在 addListenerForSingleValueEvent 中为真,在 if 语句中为假。有任何想法吗?