我对此感到困惑,我怀疑我犯的是一个非常微不足道的错误,但无论如何它仍然存在:
我想以递归方式填充包含元素的列表。让我们举一个简单的例子。我只想以下列方式反转列表:
y
但是onlineUsers(callback){
return this.status_database_ref.where('state','==','online').onSnapshot((querySnapshot)=>{
callback(querySnapshot.size)
})
}
componentDidMount(){
this.unsubscribe = firebaseService.onlineUsers(this.onUpdateOnlineUsers);
console.log(this.unsubscribe)
}
onUpdateOnlineUsers(count){
this.setState({count})
}
componentWillUnmount(){
this.unsubscribe();
}
是None,即使我在返回之前明确检查该值是否符合预期。我错过了什么?
答案 0 :(得分:2)
只有递归中的最后一次调用确实返回了一些内容,其他调用都没有返回任何内容。你缺少的是将返回值传递给函数的最顶层调用,如下所示:
def recurse(x, remaining):
if len(remaining) == 0:
assert x == [3, 2, 1] # This does not raise????
return x
x.append(remaining.pop())
return recurse(x, remaining)
x = [1, 2, 3]
y = recurse([], x)