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

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

+1
ClojureScript
重新标记

在 ClojureScript 1.10.597 中,当我定义一个多方法并返回一个带有元数据的匿名函数时,我会得到一个语法错误。

(defmulti f identity)
(defmethod f :a [x] ^:m #(vector x))

错误提示: 语法错误:意外的标记 'return'
相关的编译后的 JavaScript 代码

... cljs.core.with_meta(return (function (){...

通过 http://clojurescript.net/ 的 REPL 会话

cljs.user=> (defmulti f identity)
#'cljs.user/f
cljs.user=> (defmethod f :a [x] ^:m #(vector x))
Unexpected token 'return'
SyntaxError: Unexpected token 'return'
    at cljs$js$js_eval (http://kanaka.github.io/cljs-bootstrap/web/repl-web.js:53434:15)
    at http://kanaka.github.io/cljs-bootstrap/web/repl-web.js:54766:279
    at http://kanaka.github.io/cljs-bootstrap/web/repl-web.js:54771:22
    at cljs$js$eval_str_STAR__$_compile_loop (http://kanaka.github.io/cljs-bootstrap/web/repl-web.js:54781:24)
    at Object.cljs$js$eval_str_STAR_ [as eval_str_STAR_] (http://kanaka.github.io/cljs-bootstrap/web/repl-web.js:54796:49)
    at Function.cljs.js.eval_str.cljs$core$IFn$_invoke$arity$5 (http://kanaka.github.io/cljs-bootstrap/web/repl-web.js:54854:18)
    at Function.cljs_bootstrap.core.read_eval_print.cljs$core$IFn$_invoke$arity$3 (http://kanaka.github.io/cljs-bootstrap/web/repl-web.js:58775:33)
    at Function.cljs_bootstrap.core.read_eval_print.cljs$core$IFn$_invoke$arity$2 (http://kanaka.github.io/cljs-bootstrap/web/repl-web.js:58706:46)
    at Object.cljs_bootstrap$core$read_eval_print [as read_eval_print] (http://kanaka.github.io/cljs-bootstrap/web/repl-web.js:58695:50)
    at handler (http://kanaka.github.io/cljs-bootstrap/web/repl-main.js:47:29)
    at e (http://kanaka.github.io/cljs-bootstrap/web/jqconsole.min.js:1:16732)
    at i._HandleEnter (http://kanaka.github.io/cljs-bootstrap/web/jqconsole.min.js:1:16911)
    at i._HandleKey (http://kanaka.github.io/cljs-bootstrap/web/jqconsole.min.js:1:15169)
    at HTMLTextAreaElement.<anonymous> (http://kanaka.github.io/cljs-bootstrap/web/jqconsole.min.js:1:134)
    at HTMLTextAreaElement.dispatch (https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js:2:38053)
    at HTMLTextAreaElement.u (https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js:2:33916)
cljs.user=> 

使用额外的 let 可以绕过这个问题

(defmethod f :a [x] (let [g ^:m #(vector x)] g))

尽管如此,我们应该将这个问题提交到 Jira。

2 答案

0

是的,请创建一个 JIRA 问题。谢谢!

戴维,通常情况下,我们希望人们在这里提问——一般情况下,大多数用户都没有Jira账户(这些是有限的资源,因此我们保留Jira账户给提交补丁的贡献者)。所以这实际上是关于“我们”的(维护者)。过程文档在这里:[https://clojure.org/community/contributing#_reporting_problems_and_requesting_enhancements](https://clojure.org/community/contributing#_reporting_problems_and_requesting_enhancements)
0
by

已提交为 [https://clojure.atlassian.net/browse/CLJS-3289](https://clojure.atlassian.net/browse/CLJS-3289)

...