在 elixir sigil 中转义右括号
Escape closed parenthesis in elixir sigil
我想要一个自定义印记,这样我就可以每行一个元素。
这是我的代码
def sigil_l(text,[]), do: String.split(text,"\n")
这适用于
~l(Clash of Titans
The day after Tomorrow
The Transporter
)
失败
~l(The man from Earth (2007)
Gone Girl (2014)
)
注意上面的括号
这是错误信息
"{" starting at line 38 is missing terminator "}". Unexpected token: )
(elixir) lib/kernel/parallel_compiler.ex:97: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8
预期结果是
["The man from Earth (2007)",
"Gone Girl (2014)"]
需要更改什么代码。
我是否还需要在输入中添加任何字符并在 sigil 定义中处理?
更新
@AbM给出的方案是正确的。
我使用的是 elixir 版本 1.0.4,所以它不起作用。它确实适用于 1.1.x
解决方案
~l(The man from Earth (2007\)
Gone Girl (2014\)
)
您应该使用 \)
:
转义右括号
~l(The man from Earth (2007\)
Gone Girl (2014\)
)
这是我的脚本和 iex 输出:
defmodule SigilL do
def sigil_l(text,[]), do: String.split(text,"\n")
end
印记也有多种分隔符。
所以而不是:
~s(My funky "string(\)")
您还可以使用:
~s|My funky "string()"|
避免使用正斜杠。
显然,这意味着您必须找到另一个分隔符:
~s|My funky "string(|)"|
但至少有一个可用的解决方案。
https://elixirschool.com/en/lessons/basics/sigils/
我想要一个自定义印记,这样我就可以每行一个元素。
这是我的代码
def sigil_l(text,[]), do: String.split(text,"\n")
这适用于
~l(Clash of Titans
The day after Tomorrow
The Transporter
)
失败
~l(The man from Earth (2007)
Gone Girl (2014)
)
注意上面的括号
这是错误信息
"{" starting at line 38 is missing terminator "}". Unexpected token: )
(elixir) lib/kernel/parallel_compiler.ex:97: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8
预期结果是
["The man from Earth (2007)",
"Gone Girl (2014)"]
需要更改什么代码。 我是否还需要在输入中添加任何字符并在 sigil 定义中处理?
更新
@AbM给出的方案是正确的。 我使用的是 elixir 版本 1.0.4,所以它不起作用。它确实适用于 1.1.x
解决方案
~l(The man from Earth (2007\)
Gone Girl (2014\)
)
您应该使用 \)
:
~l(The man from Earth (2007\)
Gone Girl (2014\)
)
这是我的脚本和 iex 输出:
defmodule SigilL do
def sigil_l(text,[]), do: String.split(text,"\n")
end
印记也有多种分隔符。 所以而不是:
~s(My funky "string(\)")
您还可以使用:
~s|My funky "string()"|
避免使用正斜杠。 显然,这意味着您必须找到另一个分隔符:
~s|My funky "string(|)"|
但至少有一个可用的解决方案。 https://elixirschool.com/en/lessons/basics/sigils/