小编Ali*_*sha的帖子

在lisp函数中使用带有缺点的嵌套汽车

我正在制作一个递归的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.有任何想法吗?

谢谢!

lisp clisp list common-lisp cons

2
推荐指数
1
解决办法
109
查看次数

全局布尔值在 addListenerForSingleEventValue 函数中设置,但在以下 if 语句中无法识别

我正在通过 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 语句中为假。有任何想法吗?

java android firebase firebase-realtime-database

1
推荐指数
1
解决办法
135
查看次数