2016-08-19 3 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

어떻습니까? 두 개의지도가 필요하지만 생각보다 분명합니다.

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) 
당신이`fooBAR` 원하는 무엇을 출력
+0

나는 짧은 물건을 좋아하지만, 어리석은 느낌이 들기 때문에 처음지도에서 물건을 연결해서 돌려 줄 수 있습니다. 엘릭서에서 문장을 분리하는 관용적 인 방법이 있습니까? 아니면 특별히 금지되어 있습니까? 이것에 대한 문서가 없습니다. – jocull

+0

특별히 짧은 함수 형식을 사용하려는 경우 정상적인 방법으로이를 수행 할 수 없습니다. 평범한 함수 형식으로 두 줄로 표현할 수 있지만, 너무 길면 확실하지 않습니다. – JustMichael

+0

괜찮습니다. 특별히 짧은 양식을 사용하려고하지 않았습니다. 여러 줄로 된 긴 형식으로 작동하는 경우 샘플을 볼 수 있습니까? (지금까지'iex'에서이 작업을 시도해 보았습니다.) – jocull

관련 문제