【发布时间】:2021-11-08 05:03:34
【问题描述】:
我am porting 一个库banana-rdf 到Scala3。该库旨在为用 Scala、JS(希望在某些时候甚至是原生的)编写的 RDF 库提供一个低成本高效的接口。
我目前正在实现返回 AutoCloseable 迭代器的 Jena 库,这让我想知道如何最好地处理这些。
- 如果我将该类型转换为 scala
Iterable,那么我会丢失其上的可关闭接口,从而丢失调用者应确保在使用前关闭它的信息; - 我查看了
scala.util.Using,但这需要迭代资源,这是由调用代码确定的,而不是库; - 应该只返回 Java 迭代器吗?但我需要检查它是否与 ScalaJS 代码配合得很好
- 其他想法?
【问题讨论】:
-
Scala 有自己的
Iterators,与 Java 之间的转换应该相当便宜。你能做一个extends Iterator[Something] with AutoClosable的包装吗?与 Java 不同,AutoCloseable没有语法优势,所以Closeable可能就足够了。