某些编程语言具有创建多行文字字符串的功能,例如:
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有类似的东西吗?我意识到"
处理多行罚款,但我希望它也能正确处理\
作为文字。
谢谢!
答案 0 :(得分:15)
您可能对这个小功能感兴趣。
(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")
这确实需要额外的双引号,但会更接近你想要的。
答案 1 :(得分:11)
如果字符串中需要\
个字符,请将其转义。您无需执行任何其他操作来支持多行字符串,例如:
"hello \\
there \\
world "
=> "hello \\\nthere \\\nworld"
编辑:
既然你已经澄清了你不想逃避\
字符,我担心Clojure没有提供转义字符的特殊语法,这被问到{{3} }。从本质上讲,Clojure使用与Java相同的字符串语法,没有特殊的语法。
答案 2 :(得分:3)
如果你真的想这样做,请将你的文字字符串放在一个txt文件中,然后用clojure将其弄清楚。
(def my-string (slurp "super_long_string.txt"))
如果你想让它可以热插拔,可以在功能中啜饮它。
(defn my-string [] (slurp "something.sql"))
这样,每次更改原始字符串时,都会通过调用(my-string)
自动获取程序中的当前值。