好的开发人员,我在解决如何使功能正常工作时遇到问题。
测试用例
test "count one of each" do
expected = %{"one" => 1, "of" => 1, "each" => 1}
assert Words.count("one of each") == expected
end
这是我到目前为止的想法。
@spec count(String.t()) :: map
def count(sentence) do
sentence
|> String.split
|> Enum.map([sentence], &(%{sentence => 1 , value =>&1}))
end
end
代码本身不起作用,有人可以根据我提供的测试来解释如何实现以下功能吗?
非常感谢。
答案 0 :(得分:4)
从您的代码看来,您似乎还不了解pipes |>
或Enum
函数的工作方式。您可能会更详细地阅读文档。
这应该做您想要的:
"one of each"
|> String.split()
|> Enum.group_by(fn x -> x end)
|> Enum.map(fn {k, v} -> {k, length(v)} end)
|> Enum.into(%{})
说明:
答案 1 :(得分:2)
使用or ''
Enum.reduce