Вы можете сделать
object EmptyChildEventListener : ChildEventListener {
override fun onCancelled(p0: DatabaseError) {}
override fun onChildChanged(p0: DataSnapshot, p1: String?) {}
override fun onChildMoved(p0: DataSnapshot, p1: String?) {}
override fun onChildRemoved(p0: DataSnapshot) {}
override fun onChildAdded(p0: DataSnapshot, p1: String?) { }
}
ref.addChildEventListener(object : ChildEventListener by EmptyChildEventListener {
override fun onChildAdded(p0: DataSnapshot, p1: String?) {
subscriber.onNext(Value.parse(unitName, varName, p0))
}
})
EDIT: но вы можете, возможно, улучшить это так, например
inline fun DatabaseReference.onChildAdded(crossinline added: (DataSnapshot, String?) -> Unit) {
this.addChildEventListener(object : ChildEventListener by EmptyChildEventListener {
override fun onChildAdded(p0: DataSnapshot, p1: String?) = added(p0, p1)
})
})
Теперь вы можете сделать
ref.onChildAdded { p0, p1 ->
subscriber.onNext(Value.parse(unitName, varName, p0))
}
Вы можете просто проверить списки и использовать .extend
для объединения или .append
для добавления элементов, не включенных в список:
class Foo:
def __init__(self, value):
self.value = value
def __repr__(self):
return f'Foo({self.value})'
def concat(*args):
result = []
for arg in args:
if isinstance(arg,list):
result.extend(arg)
else:
result.append(arg)
return result
a = concat(Foo(1),Foo(2),Foo(3))
print(a)
b = concat(Foo(6),Foo(7))
print(b)
c = concat(a,Foo(4),Foo(5),b)
print(c)
Вывод:
[Foo(1), Foo(2), Foo(3)]
[Foo(6), Foo(7)]
[Foo(1), Foo(2), Foo(3), Foo(4), Foo(5), Foo(6), Foo(7)]