28

私が欲しいもの

一部のプログラミング言語には、複数行のリテラル文字列を作成する機能があります。次に例を示します。

some stuff ... <<EOF
  this is all part of the string
  as is this
  \ is a literal slash
  \n is a literal \ followed by a literal n
  the string ends on the next line
EOF

質問: Clojure にはこれに似たものがありますか? 複数行をうまく処理できることはわかっていますが、リテラルとして"も適切に処理したいと考えています。\

ありがとう!

4

3 に答える 3

20

この小さな機能に興味があるかもしれません。

(defn long-str [& strings] (clojure.string/join "\n" strings))

あなたはそのように使うでしょう

(long-str "This is the first line. Implicitly I want a new line"
          "When I put a new line in the function call to create a new line")

これには追加の二重引用符が必要ですが、希望に近いものになります。

于 2015-03-27T13:07:35.080 に答える
13

文字列に文字が必要な場合は\、エスケープしてください。たとえば、複数行の文字列をサポートするために追加の操作を行う必要はありません。

"hello \\
there \\
world "

=> "hello \\\nthere \\\nworld"

編集 :

文字をエスケープしたくないことを明確にしたので\、Clojureは文字をエスケープするための特別な構文を提供していないのではないかと思います。これは、以前に尋ねられました。本質的に、ClojureはJavaと同じ文字列構文を扱いますが、特別な構文はありません。

于 2012-06-16T15:23:21.747 に答える
5

本当にこれをやりたい場合は、リテラル文字列を txt ファイルに入れて、clojure で丸呑みしてください。

(def my-string (slurp "super_long_string.txt"))

ホットスワップ可能にしたい場合は、関数で丸呑みします。

(defn my-string [] (slurp "something.sql"))

このように、生の文字列を変更するたびに、 を呼び出すことによって、プログラムで現在の値を自動的に取得します(my-string)

于 2016-09-16T19:51:56.413 に答える