elixir符号中的转义闭括号

elixir符号中的转义闭括号,elixir,sigils,Elixir,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

我想有一个自定义标志,这样我可以有一个元素每行

这是我的密码

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\)
   )

应使用
\)
转义右括号:

以下是我的脚本和iex输出:

defmodule SigilL do

  def sigil_l(text,[]), do: String.split(text,"\n")

end

您应该用
\)将右括号转义。

以下是我的脚本和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(|)"|
但至少有一个解决方案。

符号也有多种分隔符。 因此,不是:

~s(My funky "string(\)")
您还可以使用:

~s|My funky "string()"|
这样可以避免使用正斜杠。 显然,这意味着您必须为以下内容找到另一个分隔符:

~s|My funky "string(|)"|
但至少有一个解决方案。

否,这是带有建议更改的输出。“来自地球的男人(2007\)逝去的女孩(2014\)”为我工作。添加了
iex
输出我做错了什么iex(1)>defmodule Foo do`(1)>def sigil_l(text,[]),do:String.split(text,“\n”)…(1)>end{:module,Foo,{:sigil_l,2}iex(2)>import Foo nil iex(3)>~l(来自地球的男人(2007)…(3)>逝去的女孩(2014)>)[“来自地球的男人(2007\),“逝去的女孩(2014\),”iex(4)>你是对的。它对我不起作用,因为我有elixir版本1.0.4。升级到Elixir 1.1.1,它可以正常工作。感谢您发布完整的shell图片,它提供了升级版本的线索。不,这是带有建议更改的输出。“来自地球的男人(2007\)逝去的女孩(2014\)”为我工作。添加了
iex
输出我做错了什么iex(1)>defmodule Foo do`(1)>def sigil_l(text,[]),do:String.split(text,“\n”)…(1)>end{:module,Foo,{:sigil_l,2}iex(2)>import Foo nil iex(3)>~l(来自地球的男人(2007)…(3)>逝去的女孩(2014)>)[“来自地球的男人(2007\),“逝去的女孩(2014\),”iex(4)>你是对的。它对我不起作用,因为我有elixir版本1.0.4。升级到Elixir 1.1.1,它可以正常工作。感谢您发布完整的shell图片,它提供了升级版本的线索。您应该更改您的问题。您试图避开一个括号而不是括号。@OnorioCatenacci感谢您的建议。更改了问题标题。您应该更改您的问题。您试图避开一个括号而不是括号。@OnorioCatenacci感谢您的建议。更改了问题标题。