请在2024年Clojure状态调查表中分享您的想法!

欢迎!请查看关于页面了解更多关于如何使用本网站的信息。

+1

关闭

我在宏展开 (with-open ...) 时注意到了一些奇怪的地方。

(finally ...) 部分看起来像这样
(finally (. stream clojure.core/close))

虽然这段代码能工作,但我觉得它不够地道。
我推测,如果将来在核心命名空间中添加了函数 clojure.core/close,可能会出现错误。

我是对的,还是说,方法 close 被命名空间限定实际上没有关系,因为任何进入点特殊形式调用 (. object method) 的函数都会被视为一个方法名,而不管它的命名空间是什么?

已关闭,并附注: 针对1.12.0-alpha2应用的补丁

2个回答

0

选择
 
最佳答案

这看起来像是一个展开错误(应该是 (. stream close)),但你是对的 - 点形式会忽略 method 符号的命名空间。

+1
by

是的,在展开时应更简洁(但在编译时将被忽略)。已添加票据和补丁

https://clojure.atlassian.net/browse/CLJ-2683

...