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立即完成;也可用break或return等使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中