我正在将一个叫做banana-rdf的库移植到Scala3。该库旨在为使用Scala、JS(希望最终甚至可以支持原生)编写的RDF库提供免费高效的接口。 我目前正在实现Jena库,它返回AutoCloseable迭代器,这让我想知道如何最好地处理它们。 如果我将该类型转换为scala Iterable,那么我会失去它的可关闭接口,失去了调用者在使用它之前应该确保关闭它的信息; 我看了一下scala.util.Using,但那需要通过资源进行迭代,这是由调用代码而不是库来确定的; 应该只返回Java迭代器吗?但我需要检查它是否与ScalaJS代码兼容 其他想法?
Iterator
,并且转换为Java的Iterator
应该相当便宜。你能否创建一个包装器,extends Iterator[Something] with AutoClosable
?与Java不同,AutoCloseable
没有语法上的好处,因此也许Closeable
就足够了。 - stefanobaghino