context()

Editor

Editor是get/set的封装,基于AutoCompletable

一次完整的操作为:get、修改、set,可中途打断避免set

使用Editor

java

Editor<T> editor = ...; // 获取Editor实例
for(T data: editor)
{
    // 在此处修改data
}

for开始时,get被应用;for完成时,set被应用

可以用continue使for立即完成;也可用breakreturn等使for退出

java

Editor<T> editor = ...; // 获取Editor实例
for(T data: editor)
{
    // 在此处修改data
    if(...)
        break; // 之前的修改不会生效,如果它依赖于set
}

详细的例子在minecraft的Item

创建实例

已知getter和setter时,使用Editor#of

java

Ref<T> ref = new RefStrong<>(new T());
Editor<T> editor = Editor.of(
        ThrowableFunction.of(ref::get).thenApply(T::clone), // get后克隆
        ref::set
    );

也可通过Editor#then嵌套,详细的例子在minecraft的Item