在elixir sigil中逃脱闭括号

时间:2015-12-19 06:40:40

标签: elixir sigils

我想要一个自定义的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 defination?

更新

@AbM给出的解决方案是正确的。 我在elixir版本1.0.4上,所以它不起作用。它适用于1.1.x

解决方案

~l(The man from Earth (2007\)
   Gone Girl (2014\)
   )

1 个答案:

答案 0 :(得分:1)

也有各种用于分隔符的定界符。 所以代替:

~s(My funky "string(\)")

您还可以使用:

~s|My funky "string()"|

避免使用正斜杠。 显然,这意味着您必须为以下内容找到另一个定界符:

~s|My funky "string(|)"|

但是至少有解决方案。 https://elixirschool.com/en/lessons/basics/sigils/