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 重新调用以更新返回值

例如,Itemget_family 方法不会每次都进行计算 只有在 addremove 执行后,才会将 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