问题标签 [scala-arm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
161 浏览

scala - 面向班级成员的 Scala-ARM?

我对 Scala 很陌生,所以请原谅我的基本问题。

我正在尝试让 Scala-Arm 管理类成员的发布,但在确定范围时遇到了麻烦。

尽管以下代码可以编译,但它失败了

在反映电话。因此,似乎managed_file正在立即发布。

对于局部变量,我使用了for (managed_file <- managed(...))语法,但在这里看不到该怎么做。

建议任何人?

0 投票
2 回答
393 浏览

scala - 标量臂。返回类型

我正在使用scala-arm库来自动释放/关闭资源(例如InputStream)。

但问题是下面的代码返回ExtractableManagedResource[Int],而不仅仅是Int我想要的。

是否有任何选项可以返回Int并克服包装结果ExtractableManagedResource

编辑:我知道我可以 declreresult变量 asvar并从内部分配给它for-comprehension,但我想要更多的 scala 惯用方式,即不使用var

0 投票
1 回答
695 浏览

scala - ScalaARM 错误 - 值过滤器不是 ManagedResource 的成员

按照 ScalaARM 主页上的示例,我写了这个:

(打开一个lucene IndexReader)

但是我得到这个编译错误:

错误:(34, 45) Play 2 Compiler: Indexer.scala:34: value filter is not a member of resource.ManagedResource[org.apache.lucene.index.DirectoryReader] for ( ir: IndexReader <- managed(DirectoryReader.open (FSDirectory.open(文件)))){

有人可以解释这里发生了什么吗?^

0 投票
1 回答
33 浏览

scala - Scala-arm import error: missing arguments for method resource

I've added scala-arm to my Play project but got compile error:

enter image description here

Can't understand what is wrong. Import line was taken from docs.

0 投票
0 回答
193 浏览

scala - 托管资源在另一个托管资源内时关闭

我正在使用 scala-arm,我有一个类似于这个的代码:

如果托管资源“FileInputStream”或“BufferedSource”失败,那么“ZipOutputStream”也会失败,我只会在控制台中看到“ZIP FAILED”消息。我从来没有看到“缺少文档”日志。

如果一个路径失败,那么我需要继续将所有其他文件添加到 zip 文件中。我怎样才能做到这一点?

0 投票
2 回答
227 浏览

scala - Scala 中用于嵌套资源的托管(ARM)

所以,我在 scala 中有这段代码,我将其转换为托管代码。

第一次尝试是:

但是,它看起来不太可读。有没有更好的方法让它变得managed可读?

0 投票
1 回答
74 浏览

scala - 如何从使用托管打开的文件创建字符串序列?

试过这个从文件创建一个序列:

0 投票
0 回答
41 浏览

scala - scala-arm:Iterator[Int] 类型的表达式不符合预期的 ManagedResource[B_] 类型

此代码使用"com.jsuereth" %% "scala-arm" % "2.0"

编译失败并出现错误:

任何想法?

0 投票
1 回答
168 浏览

scala - 如何在 Scala 中编写资源,同时仍然使用 scala-arm 正确关闭它们?

我有一个类,它获取一个本地文件,对其进行转换并将其存储在 GCS 中:

我正在尝试删除一些代码重复,特别是创建fileInputStreamand gcsOutputStream。但我不能简单地在方法顶部提取这些变量,因为它会在 scala-armmanaged块之外创建资源:

如您所见,代码更清晰,更可测试,但资源没有被正确处理,因为它们不是“托管”的。例如,如果在创建时抛出异常gcsOutputStreamfileInputStream则不会关闭。

我可能可以使用Google Guava sources and sinks来解决这个问题,但我想知道在 Scala 中是否有更好的方法来解决这个问题,而无需引入 Guava。理想情况下使用标准库或 scala-arm 功能,甚至可能在Cats?

  • 我应该将fileInputStreamand定义gcsOutputStream为不带任何内容并返回流的函数吗?似乎代码在任何地方都会更加() => InputStream冗长() => OutputStream
  • 我应该使用多个scala-arm“管理”来理解(一个定义fileInputStreamand gcsOutputStream,另一个在每个子函数内)?如果我这样做,“内部”输入流将被关闭两次不是问题吗?
  • 是否有一种我没有看到的干净和“scalaish”的方法来做到这一点?