Chapel 是否有类似于 Python 上下文管理器的东西?

Does Chapel have something similar to a Python context manager?

在Python中,您可以使用上下文管理器在代码块内分配和释放资源,例如本例中在with块范围内打开和关闭文件句柄:

with open('some_file', 'w') as opened_file:
    opened_file.write('Can Chapel do this!?')

Chapel 中是否存在类似的功能?如果是这样,您将如何将上述代码示例翻译成 Chapel?

Chapel 通过 manage statement 在 Chapel 1.25 中引入了上下文管理器支持。

这是上面的类似示例。请注意,内置类型还不包括上下文管理工作所必需的 enterThis()leaveThis() 方法。因此,我们需要在使用 Chapel 1.25 中的 manage 语句之前定义这些方法。这在未来的版本中应该不是必需的。

use IO;

// This should be part of standard library eventually
proc file.enterThis() ref { return this; }
proc file.leaveThis(in err: owned Error?) { this.close(); }


manage open('some_file.txt', iomode.cw) as f {
  var w = f.writer();
  w.write('yes');
}