匿名函数中的单独语句

时间:2016-08-19 22:58:53

标签: lambda elixir

我正在尝试编写一个简单的函数来将单词流转换为标题大小写。但是,我忙于重组titlecase_once的结果元组并连接结果。在JavaScript中我会使用分号来分隔语句,但我不知道该怎么做。

Stream.cycle(~w{ red white blue })
  |> Stream.map(&({h,t} = String.Casing.titlecase_once(&1)) # How do we return `h <> t` here?
  |> Enum.take(7)

1 个答案:

答案 0 :(得分:1)

这样的事情怎么样?它需要两张地图,但我认为它更清晰。

Stream.cycle(~w{ red white blue })
|> Stream.map(&(String.Casing.titlecase_once(&1)))
|> Stream.map(fn({h,t}) -> h <> t end)
|> Enum.take(7)

或使用一个功能:

Stream.cycle(~w{ red white blue })
|> Stream.map(fn(word) ->
  {h,t} = String.Casing.titlecase_once(word)
  h <> t
end)
|> Enum.take(7)

或者相同但是在一行中:

Stream.cycle(~w{ red white blue })
|> Stream.map(fn(word) -> {h,t} = String.Casing.titlecase_once(word); h <> t end)
|> Enum.take(7)