gpt4 book ai didi

string - 如何在 Elixir 中评估或执行字符串插值?

转载 作者:行者123 更新时间:2023-12-04 23:16:44 26 4
gpt4 key购买 nike

假设我使用 sigil_S 构造一个字符串:

iex> s = ~S(#{1 + 1})
"\#{1 + 1}"

然后我如何让 Elixir 评估该字符串或执行插值,就好像我输入了文字 "#{1 + 1}" ?

换句话说,我如何让它评估为 "2" ?

我知道我可以使用 EEx相反(例如 EEx.eval_string "<%=1 + 1%>" )但我很好奇是否有办法只使用“普通”字符串插值来做到这一点。

最佳答案

小写符号支持插值。更多相关信息 here :

If the sigil is lower case (such as sigil_x) then the string argument will allow interpolation. If the sigil is upper case (such as sigil_X) then the string will not be interpolated.



所以,你可以使用 sigil ~s就地评估插值:
~s(#{1 + 1}) #=> "2"
~S(#{1 + 1}) #=> "\#{1 + 1}"

或者你可以简单地使用字符串插值:
"#{1 + 1}" #=> "2"

最后,如果您想动态评估写入字符串变量的代码,您可以使用 Code.eval_string/3 :
s = "\"\#{1 + 1}\""               #=> "\"\#{1 + 1}\""
s |> Code.eval_string |> elem(0) #=> "2"

关于string - 如何在 Elixir 中评估或执行字符串插值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39484226/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com