2016-08-19 5 views
1

私は、単語のストリームをタイトルに変換する簡単な関数を書こうとしています。しかし、私は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) 
+0

? 'Foobar'または' FooBAR'ですか? – Dogbert

+0

@Dogbertこれは単なるダミースニペットなので、特に気にしません。一貫性のために 'FooBAR'と言うと? – jocull

+0

'Foobar'がうまくいけば' String.capitalize/1'を使うことができませんでしたか? – Dogbert

答えて

1

どのようなことがありますか?それは2つの地図が必要ですが、それは私が考えるより明らかです。

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

または1つの関数使用:

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

を、または同じが、1行で:

Stream.cycle(~w{ red white blue }) 
|> Stream.map(fn(word) -> {h,t} = String.Casing.titlecase_once(word); h <> t end) 
|> Enum.take(7) 
あなたは `fooBAR`のためにしたいですか何を出力
+0

私はこのことが短いのは好きですが、ちょっとばかげて、ちょうど連動して最初の地図でアイテムを返すことができます。エリクシールのステートメントを分離するための慣用的な方法はありますか?特に禁止されていますか?私はこれについてゼロのドキュメントを見つけました。 – jocull

+0

特に短い関数形式を使いたい場合、私はそれを行うための純粋な方法を考え出すことができません。通常の関数形式で2行にすることもできますが、長すぎる場合はわかりません。 – JustMichael

+0

それはいいです、私は具体的に短い形式を使用しようとしていませんでした。長い形式で複数行で動作する場合は、サンプルを表示できますか? (私はこれまで 'iex'でこれをやろうとしていました) – jocull