遍历(Iterable)

Link to 遍历iterable

遍历注解可被应用于允许 ZS 遍历的类。

  • @IterableSimple(需要实现 Iterable
  • @IterableList(需要实现 List
  • @IterableMap(需要实现 Map

CraftTweaker 的 IOreDict

java
Copy
@ZenClass("crafttweaker.oredict.IOreDict")
@IterableSimple("crafttweaker.oredict.IOreDictEntry")
@ZenRegister
public interface IOreDict extends Iterable<IOreDictEntry> {


    @ZenMemberGetter
    @ZenOperator(OperatorType.INDEXGET)
    @ZenMethod
    IOreDictEntry get(String name);

    @ZenGetter("entries")
    List<IOreDictEntry> getEntries();

    @ZenOperator(OperatorType.CONTAINS)
    @ZenMethod
    boolean contains(String name);
}

MCOreDict (实现)

java
Copy
    @Override
    public Iterator<IOreDictEntry> iterator() {
        return Arrays.asList(OreDictionary.getOreNames())
                .stream()
                .map(CraftTweakerMC::getOreDict)
                .iterator();

    }

在 ZS 中如何使用?

Link to 在-zs-中如何使用

ZenScript
Copy
for oreDictEntry in oreDict {
    print(oreDictEntry.name);
}

什么类可以被注解 || 额外信息

Link to 什么类可以被注解--额外信息

你可以注解所有实现了对应接口的类。
你需要提供一个字符串值以引用被遍历的 ZenScript的类名