如题,想要监听一个 List 的长度,当长度发生变化时,执行某些逻辑。 但是又不想每次改变的时候都启动一个线程(开销太大了)
有什么办法可以实现吗?
1
RandomAccess 2022 年 8 月 22 日 via iPhone
自定义 List 对象
|
2
liuxingdeyu 2022 年 8 月 22 日
你可以只开一个线程去循环查长度,或者开协程搞这件事
|
3
ho121 2022 年 8 月 22 日 via Android 继承 list 对象,修改 append 、insert 等方法
|
4
jdhao 2022 年 8 月 22 日 via Android
google is your friend
|
5
roundgis 2022 年 8 月 22 日 via Android
變動以前檢查?
|
6
westoy 2022 年 8 月 22 日 定义一个 ListProxy
ListProxy 定义 callback, __getattr__的时候把 object 、函数和原 len 传给 ListFuncProxy ListFuncProxy 执行后对比 len, 出现变化回调 ListProxy 的 callback 就是略显蛋疼 |
7
leimao 2022 年 8 月 22 日
Derive from List
|
9
autumn426 2022 年 8 月 22 日 via Android
继承 list 修改 list 的时候一起给做了
|
10
hhhhhh123 2022 年 8 月 22 日
为啥要开一个线程去监听啊? 虽然不知道真实需求是什么, 但是监听 列表长度 然后相对应的逻辑, 这不是很简单吗? 当列表即将 增加, 删除, 这些前置动作代码中难道会不知道? 既然知道的话,这不就是追加列表的时候 就去执行
``` def listen_list(status: bool): if status is True: print("列表追加后应执行的代码逻辑") else: "反之" def main(): status = "列表会追加元素 还是删除元素 已知 True: add, False: del" listen_list(status=True) ``` |
11
gaobing 2022 年 8 月 22 日
|
12
killva4624 2022 年 8 月 22 日
像上面说的,继承 List ;或者自定义一个类 List 对象,包一层 append 或者 pop 方法
|
13
enrolls 2022 年 8 月 22 日
|
14
dorothyREN 2022 年 8 月 22 日
简单粗暴的办法,while True
|
15
dorothyREN 2022 年 8 月 22 日
@dorothyREN #14 或者封装一个修改 list 的方法,然后都调用这个方法修改
|
16
SenLief 2022 年 8 月 22 日
重写 list 对象的方法。
|
17
yucongo 2022 年 8 月 22 日 via Android
blinker 或其他 pubsub 包
|
18
zxCoder 2022 年 8 月 22 日
代码全局替换,比如在 xxx.add(xxx) 前面添加一行记录代码
|
19
huangzhiyia 2022 年 8 月 31 日
|