ClojureScript引用Google Closure函数报错,求正确引用方法
解决Google Closure format函数的引用问题
这个报错的原因其实很好理解:goog.string/format 并不是 goog.string 命名空间下的变量——它本身就是一个独立的子命名空间,而且这个命名空间直接对应着可调用的format函数。你之前的写法把命名空间和内部变量的引用方式搞混了,自然会提示找不到这个var。
下面给你几种正确的引用方式,按需选就行:
方式1:直接引入独立命名空间,直接用format
这种最省事,因为goog.string.format本身就是个函数型的命名空间,引入后直接调用就行:
(ns example.core (:require goog.string.format)) ;; 调用示例 (format "Hello %s" "World")
方式2:给独立命名空间起别名,避免冲突
如果怕和其他地方的format重名,可以给它整个短别名,比如gfmt:
(ns example.core (:require [goog.string.format :as gfmt])) ;; 用别名调用 (gfmt/gfmt "Hello %s" "World")
方式3:同时引入goog.string和format
如果你还需要goog.string里的其他工具函数(比如trim),可以分开引入两者:
(ns example.core (:require [goog.string :as gstring] goog.string.format)) ;; 使用gstring里的trim函数 (gstring/trim " hello ") ;; 直接用format (format "Count: %d" 100)
再强调下:你之前用:refer [format]从goog.string里拿这个函数,根本拿不到——因为format根本不是goog.string的成员,它是自己单独的一个命名空间。别把这俩搞混就好啦~
内容的提问来源于stack exchange,提问作者Didier A.
相关产品推荐
相关产品推荐

