2024 年 Clojure 调查问卷中分享您的想法!

欢迎!请查阅关于页面获取有关该功能更多信息的简介。

+1

已关闭

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

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

尽管这段代码可以工作,但我觉得它并不合适。
我猜,如果在未来的某个时刻,将函数 clojure.core/close 添加到核心命名空间,可能会造成破坏。

我对吗?或许,方法 close 被命名空间限定的事实无关紧要,因为任何进入点特殊形式调用 (. object method) 的函数都将被视为方法名,不受其命名空间的影响?

带注释关闭: 为 1.12.0-alpha2 版本应用了补丁

2 个回答

0

选定
 
最佳答案

这确实看起来像是一个宏展开的 Bug(应该是 (. stream close)),但你是正确的——点表达式忽略了 method 符号的命名空间。

+1

是的,在展开中应该更干净(但在编译时被忽略)。已添加工单和补丁

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

...