是否有适用于Scala的跨平台AutoCloseable Iterable解决方案?

3

正在将一个叫做banana-rdf的库移植到Scala3。该库旨在为使用Scala、JS(希望最终甚至可以支持原生)编写的RDF库提供免费高效的接口。

我目前正在实现Jena库,它返回AutoCloseable迭代器,这让我想知道如何最好地处理它们。

  • 如果我将该类型转换为scala Iterable,那么我会失去它的可关闭接口,失去了调用者在使用它之前应该确保关闭它的信息;
  • 我看了一下scala.util.Using,但那需要通过资源进行迭代,这是由调用代码而不是库来确定的;
  • 应该只返回Java迭代器吗?但我需要检查它是否与ScalaJS代码兼容
  • 其他想法?

2
Scala有自己的Iterator,并且转换为Java的Iterator应该相当便宜。你能否创建一个包装器,extends Iterator[Something] with AutoClosable?与Java不同,AutoCloseable没有语法上的好处,因此也许Closeable就足够了。 - stefanobaghino
1个回答

0
可以使用Java的Iterable和Closeable接口,并在此基础上构建。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接