Ich habe Probleme beim Kombinieren von Ausdruck und String-Interpolation. Ich möchte so etwas wie dies zu tun:Kombinieren von String- und Ausdruckinterpolation
a = [:foo, :bar]
b = [:printfoo, :printbar]
for (str, fn) in zip(a,b)
@eval begin
"""
```
$fn()
```
Prints $str.
"""
$fn() = println("$str")
end
end
Meine gewünschte Ausgabe sind zwei Funktionen, eine, die aussehen könnte, wie getippt, wie
"""
```
printfoo()
```
Prints foo.
"""
printfoo() = println("foo")
Stattdessen ich Ausdrücke erhalten, die wie folgt aussehen (wenn ich verwendet quote
statt @eval begin
):
```\n$(fn)()\n```\nPrints $(str).\n" # /home/..., line 12:
printfoo() = begin # /home/..., line 12:
println("$(str)")
end
ich verstehe nicht, warum mit der gleichen $x
Syntax, Interpolation durchgeführt, wie ich nur wollen außerhalb der angegebenen Regionen ("..."
). Ich habe einige Kombinationen von $($x)
usw. versucht, aber einige der Feinheiten bin fehlt:
"$str"
->"$(str)"
"$($str)"
->"$(foo)"
Was "foo"
Karte würde?
Danke.
Zusammenfassung der längeren Antwort unten: '$ (" $ str ")' –