1

可以像这样格式化字符串:

text = 'text'
formatted = "Text: #{text}"

下面的呢?

pattern = "Text: #{text}"
text = 'text'
formatted = ???
4

2 回答 2

7

coffeescript 中的模式格式化是 coffeescript->javascript 编译器的一部分。

所以,

pattern = "Text: #{text}"

立即编译成

pattern = "Text: " + text;

这就是为什么

pattern = "Text: #{text}"
text = 'text'

将抛出错误“未定义文本”。

但是您可以将其包装在这样的函数中:

pattern = (text) -> "Text: #{text}"
text = 'text'
formatted = pattern text

或像这样:

pattern = ({text1, text2, text3}) -> "Text: #{text1}, #{text2} and #{text3}"
text1 = 'text'
text2 = 'awesome text'
text3 = 'another text'
formatted = pattern {text1, text2, text3}
于 2012-11-07T10:33:08.753 回答
-1

不,字符串插值语法不是这样工作的。不过,这可能是实现完全相同的事情的更好方法:

pattern = 'Text: #{text}'
text = 'text'
formatted = pattern.replace /#{text}/, text
于 2012-11-07T10:35:50.870 回答