我在下面尝试了这个:
iex(7)> String.split ("hello world") |> String.upcase |> Enum.join(" // ")
我得到了这个:
** (Protocol.UndefinedError) protocol Enumerable not implemented for "HELLO WORLD"
(elixir) lib/enum.ex:1: Enumerable.impl_for!/1
(elixir) lib/enum.ex:112: Enumerable.reduce/3
(elixir) lib/enum.ex:1124: Enum.reduce/3
有谁知道请告诉我为什么这不起作用?!
答案 0 :(得分:6)
你应该写:
String.upcase("hello world") |> String.split |> Enum.join(" // ")
请注意两点:
f(x) |> g
等于g(f(x))
,而f (x) |> g
等于f(g(x))
(空格会影响运算符优先级)。
String.split("hello world") => ["hello", "world"]
和String.upcase(["hello", "world"])
无效。