我还没有找到使用 Java 互操作在 Kawa (方案)中直接循环 Java java.lang.Iterable 或 java.util.Iterator 的方法
我可以使用我的 Java java.lang.Iterable
,然后在我的java.util.Iterator
和使用递归命名的项目上循环let
:
((define blkaccessor::java.lang.Iterable (bfaccessor:getHeaderAccessor))
(define blkaccitr::java.util.Iterator (blkaccessor:iterator))
(let loop ((block-item::JDataBlockItemData (blkaccitr:next)))
(when (blkaccitr:hasNext)
(display &{&[block-item:name] = &[block-item:value] })
(loop (blkaccitr:next))
)
)
代码运行并列出 REPL 中的所有项目,但必须有一种方法可以直接在Iterable
or 迭代器上循环。
注意:我刚刚意识到我的递归“let”是非常错误的(如果迭代器hasNext
方法在输入时返回 false,它将失败,因为我通过调用 next 而不首先检查它来初始化块项目,hasNext
并且它不会打印所有项目)但是这部分该代码对于回答问题并不是必不可少的,并且可以修复(我现在时间不多了,但我明天会尝试更新代码)。
起点和基本代码是我获得 Iterable 和 Iterator 的前两行。