字符串插值的默认分隔符是什么?

时间:2016-05-10 11:36:54

标签: julia

似乎",", "$", "/"全部用作分隔符,但"_"没有。

x = "1"
"$x,x", "$x$x", "$x/1", "$x_1"

有没有关于此的文件?

2 个答案:

答案 0 :(得分:4)

我认为这是因为x_1是Julia中的有效变量名,所以它试图将该变量的值插入到字符串中。

答案 1 :(得分:2)

doc says

  

将$之后的最短完整表达式作为其值插入字符串的表达式

github issue #455中解释了内部工作原理,可以通过以下方式进行总结:

  

字符串插值的工作方式实际上完全是在Julia中定义的。会发生什么是解析器(在FemtoLisp中)扫描代码并找到由双引号分隔的字符串文字。如果它在字符串中找不到未转义的$,它只会创建一个字符串文字本身 - ASCIIString或UTF8String,具体取决于字符串的内容。另一方面,如果字符串具有未转义的$,则它将字符串文字的解释移植到str julia宏,该宏生成一个表达式,通过连接字符串文字和插值来构造所需的字符串。这是一个很好的优雅方案,让解析器不用担心插值等问题。

我猜测#\, #\) #\] #\} #\;,)]} ;分别关闭表达式的标记, $指定下一次插值的开始。