refresh¶
警告
这部分内容涉及 JAnim 实现原理,可能较为复杂,若没有研究源码的需求,你应酌情阅读
- janim.utils.refresh.register(func=None, /, *, fallback_check: Callable[[Any], bool]) Callable[[T], T]¶
- janim.utils.refresh.register(func: T) T
用于在需要时才进行值的重新计算,提升性能
当一个方法 self.func 被修饰后,会记忆 self.func 被调用后的返回值, 并在之后的调用中直接返回该值,而不对 self.func 进行真正的调用; 需要
self.mark_refresh_required(self.func)才会对 self.func 重新调用以更新返回值例如,
Item的get_family方法不会每次都进行计算 只有在add或remove执行后,才会将get_family标记为需要更新 使得在下次调用get_family才重新计算结果并返回如果指定了
fallback_check函数,则每次都会调用该函数, 如果返回值为 True,则忽略缓存,并且得到的结果不记录到缓存中另见:
test.utils.test_refresh.RefreshTest.
- class janim.utils.refresh.Refreshable(*args, **kwargs)¶
基类:
object- mark_refresh(func: Callable | str) Self¶
标记指定的
func需要进行更新
- reset_refresh() Self¶
- class janim.utils.refresh.RefreshData¶
基类:
object