【问题标题】:coffeescript multiline strings compile into multiline stringscoffeescript 多行字符串编译成多行字符串
【发布时间】: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)

【问题讨论】:

    标签: coffeescript


    【解决方案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 字符串有什么关系。
      猜你喜欢
      • 2015-09-18
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 2023-03-26
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多