Scala 是不是有跨平台的 AutoCloseable Iterable 解决方案?
Posted
技术标签:
【中文标题】Scala 是不是有跨平台的 AutoCloseable Iterable 解决方案?【英文标题】:Is there a cross platform AutoCloseable Iterable solution for Scala?Scala 是否有跨平台的 AutoCloseable Iterable 解决方案? 【发布时间】:2021-11-08 05:03:34 【问题描述】:我am porting 一个库banana-rdf 到Scala3。该库旨在为用 Scala、JS(希望在某些时候甚至是原生的)编写的 RDF 库提供一个低成本高效的接口。
我目前正在实现返回 AutoCloseable 迭代器的 Jena 库,这让我想知道如何最好地处理这些。
如果我将该类型转换为 scalaIterable
,那么我会丢失其上的可关闭接口,从而丢失调用者应确保在使用前关闭它的信息;
我查看了scala.util.Using
,但这需要迭代资源,这是由调用代码确定的,而不是库;
应该只返回 Java 迭代器吗?但我需要检查它是否与 ScalaJS 代码配合得很好
其他想法?
【问题讨论】:
Scala 有自己的Iterator
s,与 Java 之间的转换应该相当便宜。你能做一个extends Iterator[Something] with AutoClosable
的包装吗?与 Java 不同,AutoCloseable
没有语法优势,所以 Closeable
可能就足够了。
【参考方案1】:
可以使用 Java Iterable 和 Closeable 接口,并以此为基础。
【讨论】:
以上是关于Scala 是不是有跨平台的 AutoCloseable Iterable 解决方案?的主要内容,如果未能解决你的问题,请参考以下文章
Mapreduce+Hive+Spark+Scala平台搭建