[英]How do I map any given function over a list of values?
我在字符上拆分字符串,并希望修剪生成的拆分中的所有项目。 我希望以下内容可以作为String.trim/1
存在:
iex> "My delimited ! string of doom" |> String.split("!") |> Enum.map(String.trim)
** (UndefinedFunctionError) function String.trim/0 is undefined or private. Did you mean one of:
* trim/1
* trim/2
(elixir) String.trim()
我收到一个UndefinedFunctionError
表明函数String.trim/0
不存在。 我想要的是通过传递给Enum.map
的匿名函数轻松实现的:
iex> "My delimited ! string of doom" |> String.split("!") |> Enum.map(fn (word) -> String.trim(word) end)
["My delimited", "string of doom"]
Enum.map/2
是否需要匿名函数作为第二个参数? 是否可以将我想要的功能作为参数?
您需要使用& operator
。 捕获操作员
尝试这个:
iex()> "my delimited ! string of doom" |> String.split("!") |> Enum.map(&String.trim/1)
["my delimited", "string of doom"]
虽然@ theanh-le的答案肯定是正确的并完美地回答了你的问题,但你根本不需要String#trim/1
。 String#split/3
接受正则表达式:
iex(1)> "delimited ! string of doom" |> String.split(~r{\s*!\s*})
["delimited", "string of doom"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.