如何在ClojureScript中引用Google Closure函数?

3

这是如何引用 Google Closure 函数命名空间的方法:

(ns example.core
  (:require
    [goog.string :as gstring]
    goog.string.format))

但是如何引用一些函数呢?我尝试了这个方法:
(ns example.core
  (:require
    [goog.string :as gstring :refer [format]]
    goog.string.format))

但是它无法工作,报错如下:无效:引用,变量goog.string/format不存在 谢谢。
2个回答

0

就结构而言,ns表单对于Closure库与ClojureScript命名空间而言,:refer的本质是相同的。因此,这个表单

(ns example.core
 (:require
   [goog.string :as gstring :refer [capitalize]]))

会用到capitalize

但是,goog.string.format是一个特殊的命名空间,它并不真正遵循规则;最好只是跟随https://clojurescript.org/reference/google-closure-library#requiring-a-function上的例子。


那么这是当前的限制吗?也就是说,在ClojureScript 1.9中无法引用这种JavaScript函数,只能使用别名访问或完全限定名称? - Didier A.
@DidierA。我认为您提到的format示例可能是可以的。您是否在使用自托管的ClojureScript?如果是,这可能只是当前的限制,特别是如果capitalize示例对您不起作用。 - Mike Fikes

-1

使用 import 代替:

(ns example.core
    (:import
        [goog.string format]))

(println (format "% 10.2f" -123.456))

:use / :only is a dual form of :require / :refer, so the above is the same as (ns example.core (:require [goog.string :as string :refer [format]])) which fails with TypeError: goog.string.format is not a function - Mike Fikes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接