首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法可以在Kawa中对Java进行二次循环,或者在java.util.Iterator上进行交替循环?

是否有一种方法可以在Kawa中对Java进行二次循环,或者在java.util.Iterator上进行交替循环?
EN

Stack Overflow用户
提问于 2019-01-08 21:15:18
回答 1查看 145关注 0票数 1

我还没有找到在Kawa (方案)中使用Java直接循环Java java.lang.Iterable或java.util.Iterator的方法

我可以获得我的Java java.lang.Iterable,然后在我的java.util.Iterator和循环中使用一个名为let的递归

代码语言:javascript
复制
((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或Iterator上循环。

注意:我刚刚意识到我的递归"let“是非常错误的(如果迭代器hasNext方法在条目上返回false将失败,因为我首先调用next来初始化块项,但它不会打印所有项),但是这部分代码对于回答问题并不重要,它可以修复(我现在没有时间了,但我明天会尝试更新代码)。

起点和基本代码是我获得Iterable和Iterator的前两行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-09 09:30:34

它看起来像是"map“和"for-each”应该能够在迭代器上迭代:https://gitlab.com/kashell/Kawa/commit/9428041dca2d262edc3a5ab781e1302f33e279a1

如果没有更多的细节(或更少),您的代码就无法再现,但下面是Java字符串数组上迭代的一个示例:

代码语言:javascript
复制
(let ((java-string-array (String[] "aaa" "bb" "c")))
  (for-each (lambda (string) (write string))
            java-string-array))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54099818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档