ClojureScript 格式字符串与 goog.string.format 不能替代

标签 clojure clojurescript google-closure-library

我正在尝试在浏览器中运行 ClojureScript,以十六进制格式设置颜色以在 HTML 中使用。

这是我的“格式”函数。

(defn gen-format [& args] (apply gstring/format args) )

在“strings”命名空间中,我需要 goog.string 库:

(:require [goog.string :as gstring] [goog.string.format :as gformat])

但是当我尝试从 javascript 调用它时:

document.write(mypackage.strings.gen_format("#%x%x%x",0,0,0));

它只返回#%x%x%x

它没有崩溃。但 goog format 函数似乎没有替换其中的值。我在这里做错了什么吗?

最佳答案

%x 是做什么的?

查看 format source sorce ,仅支持 sfdiu:

var formatRe = /%([0\-\ \+]*)(\d+)?(\.(\d+))?([%sfdiu])/g;

这似乎对我来说效果很好:

mypackage.strings.gen_format("#%d%d%d", 0, 0, 0)
<小时/>

更新:如果您需要用颜色渲染字符串,那么这些怎么样:

(defn hex-color [& args]
  (apply str "#" (map #(.toString % 16) args))

(defn hex-color [r g b]
  (str "#" (.toString r 16) (.toString g 16) (.toString b 16))

关于ClojureScript 格式字符串与 goog.string.format 不能替代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24635974/

相关文章:

主线程中的 Clojure 异常

javascript - 如何使用 Clojurescript 与 html DOM 交互?

Clojurescript 添加事件监听器

javascript - 我怎样才能让谷歌的闭包库加载得更快?

javascript - Google Closure 编译器,处理 JSC_INEXISTENT_PROPERTY 警告

java - 如何在 Clojure REPL 中从 Maven 项目加载 Java 类?

clojure - 提供可设置的全局变量

python - 为什么此 Python 代码比其等效的 Clojure 代码更快

ClojureScript:启动并运行Figwheel REPL

javascript - google 闭包库 sanitizer.sanitize 删除了我在 dom 元素上的 id