![]() |
1
60
丹尼尔, 我最近刚部署了scala arm库用于自动资源管理。您可以在这里找到文档: http://wiki.github.com/jsuereth/scala-arm/ 此库支持三种使用样式(当前): 1)命令式/表示式:
2)一元风格
3)分隔的延续样式 这是一个“echo”TCP服务器:
代码使用资源类型特征,因此它能够适应大多数资源类型。它有一个回退,可以对具有Close或Dispose方法的类使用结构类型。请查看文档,如果您想添加任何方便的功能,请告诉我。 |
![]() |
2
72
克里斯·汉森的 blog entry 'ARM Blocks in Scala: Revisited' from 3/26/09 谈论马丁·奥德斯基的第21张幻灯片 FOSDEM presentation . 下一个块直接从幻灯片21中获取(经许可):
——结束引用—— 然后我们可以这样称呼:
这种方法的缺点是什么?这种模式似乎可以解决95%的我需要自动资源管理的地方… 编辑: 添加了代码段
编辑2:
扩展设计模式-从python汲取灵感
这是2.8级的。
|
![]() |
3
18
这里是 James Iry 使用延续的解决方案:
以下是具有或不具有可供比较的连续性的解决方案:
下面是Tiark Rompf的改进建议:
|
![]() |
4
7
我看到了在scala中进行ARM的逐步4步进化:
|
![]() |
5
6
有重量轻(10行代码)手臂包括更好的文件。见: https://github.com/pathikrit/better-files#lightweight-arm
如果您不想要整个库,可以通过以下方式实现:
|
![]() |
6
1
使用类型类怎么样
|
![]() |
7
1
另一个选择是斩波的懒惰的Tryclose Monad。它非常适合数据库连接:
有了溪流:
|