web-dev-qa-db-ja.com

Clojure <> ClojureScript;例:「フォーマット」機能

Clojureには、formatと呼ばれるこの非常に便利な関数があります。文字列を簡単にテンプレート化できることで知られています。この関数は、ほとんどのプログラミング言語で一般的に使用できます。

ClojureScriptがこの関数を実装していないことに少しイライラしました。私が調査できる限り、それは古いバージョンで実装されていましたが、最新のものには機能が含まれていません。

これには理由があるかどうか誰かが知っていますか?

20
Anton Harald

formatはClojureScriptに存在します。これは、ClojureScriptの基本的な部分であるGoogle Closure Library(GCL)からのものです。残念ながら、それを使用するのは難しい場合があります。従来の方法は、[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))

documentation のこの短いページの下部に、ほぼ同じ例があります。

ClojureScriptのどの部分がGCLであるかを十分に言うことはできません。ここに 別の参照 があります。これは、formatがClojureScriptの一部である関数であることを意味します。

その参照からの引用は次のとおりです。

Google Closure Libraryは、モジュラーアーキテクチャに基づいてGoogleが開発したjavascriptライブラリであり、DOMの操作とイベント、ajaxとJSONなどの機能のためのクロスブラウザー機能を提供します。

これは、Closureコンパイラ(ClojureScriptコンパイラによって内部的に使用される)を利用するために特別に作成されています。

また、ClojureScriptはClosureCompilerとClosureLibraryに基づいて構築されています。実際、ClojureScript名前空間はClosureモジュールです。

17
Chris Murphy

このコメント 関連するjiraチケットが役立つ場合があります:

これを裏付けると、goog.string.formatは高度な最適化に逆らい、Clojureのフォーマットの機能のいくつかを提供します-これはJava.util.Formatterのために多くのことを行います。解約についてはお詫びしますが、これは、実際に提供される機能のほんの少しのために、人々が自分自身でスタブするのは簡単なことです。

16
gfredericks