Clojure <> ClojureScript; 例如:"格式"功能

Ant*_*ald 18 clojure clojurescript

在Clojure中有一个非常方便的函数,它被称为format.众所周知,它能够轻松模拟字符串.该功能通常在大多数编程语言中可用.

我发现ClojureScript没有实现这个功能,我有点恼火.据我所知,它是在旧版本中实现的,但最新版本不包含该功能.

谁知道这是否有原因?

Chr*_*phy 17

format存在于ClojureScript中.它来自Google Closure Library(GCL),它是ClojureScript的基本组成部分.不幸的是,使用它可能会很棘手.传统的方法是同时需要[goog.string :as gstring][goog.string.format],然后聘请的命名空间gstring.format.例如:

(ns rostering.components.services
  (:require 
    [goog.string :as gstring]
    [goog.string.format]))

(str "$" (gstring/format "%.2f" 2.5))
Run Code Online (Sandbox Code Playgroud)

几乎相同的例子都在这个简短的文档页面的底部.

我不能说ClojureScript的一部分是GCL.这是另一个参考.这意味着该format函数是ClojureScript的一部分.

以下是该参考文献的引用:

Google Closure Library是一个由Google开发的javascript库,基于模块化架构,提供DOM操作和事件的跨浏览器功能,ajax和JSON等功能.

它专门用于利用Closure Compiler(由ClojureScript编译器内部使用).

ClojureScript建立在Closure Compiler和Closure Library之上.实际上,ClojureScript命名空间是Closure模块.

  • 为什么它不能成为格式字符串的一部分?这似乎是一种更简单的方法。 (2认同)
  • 它很可能是格式字符串的一部分。但是,使用超出其明确定义的限制的任何功能会让我感到非常不舒服。事实上,测试任何超出其目的的硬件或软件都是自找麻烦,并导致维护问题。例如,在这里我可以设想有人查找文档以查看 `$` 是否实际上是一个格式化字符,这实际上可能是我所知道的! (2认同)
  • 我认为这个遗产中所有格式函数的约定(`gstring/format`的文档直接引用[printf](http://www.cplusplus.com/reference/cstdio/printf/))是所有格式说明符开始的使用`%`,所以任何其他角色都可以.如果你不能指望它们,那么它们就没那么有用了.另一个例子是[java.util.Formatter](https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html)的文档(它是`clojure.core/format`的基础)给这个例子带一个美元符号:`"自上次陈述以来获得或损失的金额:$%(,.2f"`. (2认同)

gfr*_*cks 16

对相关jira票证的评论可能会有所帮助:

支持这一点,goog.string.format无法进行高级优化,它提供了Clojure格式的一些功能 - 由于java.util.Formatter,它做了很多.为流失道歉,但这对于人们来说是一件简单的事情,因为它实际上提供了一些功能.