coffeescript 多行字符串编译成多行字符串

Posted

技术标签:

【中文标题】coffeescript 多行字符串编译成多行字符串【英文标题】:coffeescript multiline strings compile into multiline strings 【发布时间】:2013-10-23 17:26:35 【问题描述】:

这个字符串怎么来的

"answer 
 to life 
 the universe 
 and everything
 is
 #40+2
"

编译成

"  answer   to life   the universe   and everything  is  " + (40 + 2) + "";

如何强制 coffescript 保持多行(保持字符串插值不变):

 "answer \ 
 to life \
 the universe \
 and everything \
 is \
 "+(40+2)

【问题讨论】:

【参考方案1】:

我同意在定义长字符串时能够保持缩进是很好的。您可以在咖啡脚本中使用字符串添加来实现此效果,就像在 javascript 中一样:

myVeryLongString = 'I can only fit fifty-nine characters into this string ' +
                   'without exceeding eighty characters on the line, so I use ' +
                   'string addition to make it a little nicer looking.'

评估为

'I can only fit fifty-nine characters into this string without exceeding eighty characters, so I use string addition to make it a little nicer looking.'

【讨论】:

【参考方案2】:

尝试使用heredoc 语法:

myString = """
answer
to life
the universe
and everything
is
#40+2
"""

这会转换成这个 javascript:

var myString;

myString = "answer\nto life\nthe universe\nand everything\nis\n" + (40 + 2);

实际上没有任何意义让它在编译后的 javascript 中以视觉方式出现在换行符上,是吗?

【讨论】:

不,我希望它们在 javascript 中以视觉方式出现在新行上......似乎这几乎是不可能的 @Agzam:你为什么关心生成的 JavaScript 的样子?这些东西不适合人类食用。 是的,这有什么关系? 我正在处理 xml 字符串。手动将现有的javascript代码转换成coffee,并尝试比较结果......而且很难比较 当您将 javascript 转换为 coffeescript 时,生成的编译后的 js 看起来几乎不会一样 - 尝试区分它们是徒劳的。同样将 js 逐字复制到咖啡脚本中通常只会导致糟糕的咖啡脚本。你通常可以用咖啡更优雅地做事。如果您真的想将遗留的 js 转换为集体咖啡(并且不想只使用“适当的”咖啡脚本技术编写它),您可以使用像 js2coffee.org 这样的工具。我不确定这与 XML 字符串有什么关系。

以上是关于coffeescript 多行字符串编译成多行字符串的主要内容,如果未能解决你的问题,请参考以下文章

我无法在 Coffeescript 交互模式(REPL)中编写多行代码

如何在 SQL Server 中将多行文本连接成单个文本字符串

关于在Hive中将特定字符分隔的字符串拆分成多行的应用

Oracle一列的多行数据拼成一行显示字符

如何将Oracle中同一列的多行记录拼接成一个字符串

一句话实现字段拆分成多行