String 带函数的字符串插值
我想知道为什么julia中的字符串插值对String 带函数的字符串插值,string,julia,String,Julia,我想知道为什么julia中的字符串插值对f1这样的函数有效,但在下面的示例中对findall无效。有没有一种方法可以将findall这样的函数与字符串插值一起使用 f1 = function(x, y) x + y end "1 + 4 = $(f1(1, 4))" findall(r"a", "abca") "x: $(findall(r\"a\", \"abca\"))"
f1
这样的函数有效,但在下面的示例中对findall
无效。有没有一种方法可以将findall
这样的函数与字符串插值一起使用
f1 = function(x, y) x + y end
"1 + 4 = $(f1(1, 4))"
findall(r"a", "abca")
"x: $(findall(r\"a\", \"abca\"))" # failed
我使用的是Julia 1.6.1。经过一些试验后,这似乎是可行的。但我仍然不明白为什么它会以双引号失败
"""x: $(findall(r"a", "abca"))"""
在
$(…)内的字符串插值中
您可以编写常规的Julia代码,无需像原始示例中那样转义“
等。只需插入完全相同的表达式:
julia> findall(r"a", "abca")
2-element Vector{UnitRange{Int64}}:
1:1
4:4
julia> "x: $(findall(r"a", "abca"))"
"x: UnitRange{Int64}[1:1, 4:4]"
哇,这太简单了。这对我来说仍然很难理解。似乎julia在遇到
$
符号时会先进行插值,然后完成字符串的构造?如果是这样,这无法解释为什么三引号有效。或者因为它会自动转义$()
?这里的单四分之一和三分之一没有区别,所以我不太确定你在问什么。