From 8c5994cea7740227c3c584a1924f5e972decb3ff Mon Sep 17 00:00:00 2001 From: marocchino Date: Mon, 5 Sep 2016 23:24:08 +0900 Subject: [PATCH] [KO] Updated translation (#652) - Updated basic funtions - Removed colon at the end of sentences. - Unified translated words: arity, behaviour - Applied Other minor fixes and reviewes from fabulous people. --- ko/lessons/advanced/metaprogramming.md | 2 +- ko/lessons/basics/functions.md | 45 ++++++++++++++++++-------- ko/lessons/basics/mix.md | 16 ++++----- ko/lessons/basics/modules.md | 6 ++-- ko/lessons/basics/pipe-operator.md | 5 ++- 5 files changed, 45 insertions(+), 29 deletions(-) diff --git a/ko/lessons/advanced/metaprogramming.md b/ko/lessons/advanced/metaprogramming.md index c246392b21..ca673b4c8b 100644 --- a/ko/lessons/advanced/metaprogramming.md +++ b/ko/lessons/advanced/metaprogramming.md @@ -213,7 +213,7 @@ iex> Example.double_puts(:os.system_time) 1450475941851733000 ``` -시간이 다릅니다! 무슨 일이 있었던 걸까요? `unquote/1`를 같은 표현식에 여러번 사용하는 것은 재평가를 발생시키며 예상치 못한 결과를 가져옵니다. `bind_quoted`를 사용해서 예제를 변경해봅시다: +시간이 다릅니다! 무슨 일이 있었던 걸까요? `unquote/1`를 같은 표현식에 여러 번 사용하는 것은 재평가를 발생시키며 예상치 못한 결과를 가져옵니다. `bind_quoted`를 사용해서 예제를 변경해봅시다: ```elixir defmodule Example do diff --git a/ko/lessons/basics/functions.md b/ko/lessons/basics/functions.md index 2565a18662..3e7e6667f1 100644 --- a/ko/lessons/basics/functions.md +++ b/ko/lessons/basics/functions.md @@ -14,7 +14,7 @@ Elixir를 포함한 많은 함수형 언어에서, 함수들은 일급 시민입 익명 함수는 말그대로 이름이 없습니다. `Enum` 수업에서 보았듯이, 함수는 빈번히 다른 함수로 넘겨지게 됩니다. Elixir에서 익명 함수를 정의하기 위해, `fn` 그리고 `end` 키워드가 필요합니다. 익명 함수 내에서 매개변수의 개수를 정의할 수 있으며, 함수의 몸체는 `->`로 구분됩니다. -기초적인 예제를 보도록 합시다: +기초적인 예제를 보도록 합시다. ```elixirre iex> sum = fn (a, b) -> a + b end @@ -38,7 +38,7 @@ iex> sum.(2, 3) Elixir에서 패턴매칭은 단순히 변수를 다루는 데서 그치지 않고, 함수 시그니처에서도 적용될 수 있다는 것을 이 섹션에서 확인할 것입니다. -매칭하여 대응되는 함수를 불러일으키는 매개변수의 집합을 식별하기 위해 패턴매칭을 사용합니다: +Elixir에서는 매칭하여 대응되는 함수를 불러일으키는 매개변수의 집합을 식별하기 위해 패턴매칭을 사용합니다. ```elixir iex> handle_result = fn @@ -58,7 +58,7 @@ An error has occurred! 차후에 호출할 수 있도록 함수를 이름과 같이 정의할 수 있습니다. 이는 모듈 내에서 `def` 키워드로 정의됩니다. 지금은 이름이 있는 함수를 다루는 것에 집중하도록 하고, 다음 수업에서 모듈에 대해 더 배울 것입니다. -모듈 내에서 정의된 함수는 다른 모듈에서 접근이 가능하며, 이는 Elixir에서 특히 유용한 요소 중 하나입니다. +모듈 내에서 정의된 함수는 다른 모듈에서 접근이 가능하며, 이는 Elixir에서 특히 유용한 요소 중 하나입니다. ```elixir defmodule Greeter do @@ -93,9 +93,32 @@ iex> Length.of [1, 2, 3] 3 ``` +### 함수 이름짓기와 인자 개수 + +앞서 함수는 주어진 이름과 인자 개수를 조합해 이름짓는다는 이야기를 했습니다. 이 말은 이렇게 할 수 있다는 이야기입니다. + +```elixir +defmodule Greeter2 do + def hello(), do: "Hello, anonymous person!" # hello/0 + def hello(name), do: "Hello, " <> name # hello/1 + def hello(name1, name2), do: "Hello, #{name1} and #{name2}" + # hello/2 +end + +iex> Greeter2.hello() +"Hello, anonymous person!" +iex> Greeter2.hello("Fred") +"Hello, Fred" +iex> Greeter2.hello("Fred", "Jane") +"Hello, Fred and Jane" +``` + +함수 이름을 주석으로 달아두었습니다. 첫 번째 구현은 인자를 받지 않습니다. 그래서 `hello/0`라 합니다. 두 번째는 하나의 인자를 받고 `hello/1`라 하고 계속 이런 식입니다. 다른 언어의 함수 오버로드와는 다르게 3개의 서로 _다른_ 함수가 존재합니다.(아까 전에 설명했던 패턴매칭은 인자 개수가 같은 함수의 선언이 여러 번 있을 때만 적용됩니다.) + + ### Private 함수 -다른 모듈에서 함수에 접근하는 것을 원하지 않는다면, 정의된 모듈 내에서만 호출될 수 있도록 private 함수를 이용할 수 있습니다. Elixir에서는 그것들을 `defp` 키워드를 이용하여 정의할 수 있습니다: +다른 모듈에서 함수에 접근하는 것을 원하지 않는다면, 정의된 모듈 내에서만 호출될 수 있도록 private 함수를 이용할 수 있습니다. Elixir에서는 그것들을 `defp` 키워드를 이용하여 정의할 수 있습니다. ```elixir defmodule Greeter do @@ -136,10 +159,9 @@ iex> Greeter.hello ["Sean", "Steve"] "Hello, Sean, Steve" ``` -### 디폴트 인자 - -인자에 디폴트 값을 할당하고 싶다면, `인자 \\ 값` 문법을 이용할 수 있습니다: +### 기본값 인자 +인자에 기본값을 할당하고 싶다면, `인자 \\ 값` 문법을 이용할 수 있습니다: ```elixir defmodule Greeter do @@ -161,9 +183,7 @@ iex> Greeter.hello("Sean", "es") "Hola, Sean" ``` - -가드 예제에 디폴트 인자를 적용한 경우를 다뤄보도록 합시다. 아마, 다음과 같이 나타낼 수 있을 겁니다. - +가드 예제에 기본값 인자를 적용한 경우를 다뤄보도록 합시다. 아마 다음과 같이 나타낼 수 있을 겁니다. ```elixir defmodule Greeter do @@ -184,9 +204,7 @@ end ** (CompileError) def hello/2 has default values and multiple clauses, define a function head with the defaults ``` - -Elixir에서 여러 매칭 함수에 디폴트 인자가 들어가는 것을 권장하지 않습니다. 다소 헷갈릴 수 있기 때문입니다. 이를 다루기 위해서, 디폴트 인자가 들어있는 함수 선언문을 추가해봅시다. - +Elixir에서는 여러 매칭 함수에 기본값 인자가 들어가는 것을 권장하지 않습니다. 혼동할 수 있기 때문입니다. 이를 다루기 위해서, 기본값 인자가 들어있는 함수 선언문을 추가해봅시다. ```elixir defmodule Greeter do @@ -211,4 +229,3 @@ iex> Greeter.hello ["Sean", "Steve"] iex> Greeter.hello ["Sean", "Steve"], "es" "Hola, Sean, Steve" ``` - diff --git a/ko/lessons/basics/mix.md b/ko/lessons/basics/mix.md index 466e2d3804..9b94e175cd 100644 --- a/ko/lessons/basics/mix.md +++ b/ko/lessons/basics/mix.md @@ -35,7 +35,7 @@ $ mix new example * creating test/example_test.exs ``` -이번 수업에서는 `mix.exs` 파일에만 관심을 두고 살펴보도록 하겠습니다. 이 파일에서 우리가 방금 시작한 프로젝트와 프로젝트가 필요로 하는 의존성과 환경, 버전을 이해할 수 있습니다. 가장 좋아하는 에디터로 이 파일을 열었다면 이렇게 보일 것입니다. 주석은 생략하겠습니다: +이번 수업에서는 `mix.exs` 파일에만 관심을 두고 살펴보도록 하겠습니다. 이 파일에서 우리가 방금 시작한 프로젝트와 프로젝트가 필요로 하는 의존성과 환경, 버전을 이해할 수 있습니다. 가장 좋아하는 에디터로 이 파일을 열었다면 이렇게 보일 것입니다. 주석은 생략하겠습니다. ```elixir defmodule Example.Mixfile do @@ -66,13 +66,13 @@ end ## 대화형 셸에서 만나보기 -응용 프로그램을 사용하고 설정할 수 있는 환경에서 `iex`을 사용하면 편할 때가 올 수도 있습니다. 다행스럽게도 mix를 사용해서 간단하게 사용할 수 있습니다. `iex` 세션을 이렇게 실행하게 되면: +응용 프로그램을 사용하고 설정할 수 있는 환경에서 `iex`을 사용하면 편할 때가 올 수도 있습니다. 다행스럽게도 mix를 사용해서 간단하게 사용할 수 있습니다. `iex` 세션을 이렇게 실행하실 수 있습니다. ```bash $ iex -S mix ``` -현재 애플리케이션과 의존성을 현재 런타임으로 불러와 `iex`를 실행할 수 있습니다. +그러면, 현재 애플리케이션과 의존성을 현재 런타임으로 불러와 `iex`를 실행할 수 있습니다. ## 컴파일하기 @@ -99,7 +99,7 @@ Generated example app 의존성을 더해 주려면 먼저 `mix.exs` 파일의 `deps` 단락에다가 내용을 채워넣으면 됩니다. 반드시 있어야 하는 값 둘(atom으로 된 패키지 이름과 버전 문자열)과 옵션으로 이루어진 튜플 여러 개로 의존성 리스트를 채워나갈 수 있습니다. -의존성을 가진 [phoenix_slim](https://github.com/doomspork/phoenix_slim) 프로젝트를 한번 예로 들어서 살펴보겠습니다: +의존성을 가진 [phoenix_slim](https://github.com/doomspork/phoenix_slim) 프로젝트를 한번 예로 들어서 살펴보겠습니다. ```elixir def deps do @@ -112,23 +112,23 @@ end 위에 있는 의존성을 보면 `cowboy`는 개발하고 테스트 할 때에만 필요하다는 걸 알 수 있습니다. -의존성을 다 정해주고 나면 이제 해야 할 일은 가져오는 거, 딱 하나밖에 안 남았습니다. `bundle install`와 비슷한 일을 하지요: +의존성을 다 정해주고 나면 이제 해야 할 일은 가져오는 거, 딱 하나밖에 안 남았습니다. `bundle install`와 비슷한 일을 하지요. ```bash $ mix deps.get ``` -바로 이걸로요! 프로젝트에 필요한 의존성을 정하고 가져왔습니다. 이제 필요할 때라면 언제라도 의존성을 추가할 수 있게 되었습니다. +다 되었습니다! 프로젝트에 필요한 의존성을 정하고 가져왔습니다. 이제 필요할 때라면 언제라도 의존성을 추가할 수 있게 되었습니다. ## 실행 환경 -Ruby에서 사용되는 Bundler처럼 mix는 실행 환경을 설정하고 바꿀 수 있습니다. mix로 크게 별다른 설정 없이 바로 사용할 수 있는 환경에는 세 가지가 있습니다: +Ruby에서 사용되는 Bundler처럼 mix는 실행 환경을 설정하고 바꿀 수 있습니다. mix로 크게 별다른 설정 없이 바로 사용할 수 있는 환경에는 세 가지가 있습니다. + `:dev` — 기본적으로 적용하는 환경입니다. + `:test` — `mix test`를 실행할 때 사용합니다. 바로 다음 수업에서 다루겠습니다. + `:prod` — 실제 프로덕션에 애플리케이션을 내놓을 때 사용합니다. -현재 실행 환경은 코드 내부에서 `Mix.env`를 통해 접근할 수 있습니다. 예상대로, `MIX_ENV` 환경 변수를 통해 실행 환경을 변경할 수 있습니다: +현재 실행 환경은 코드 내부에서 `Mix.env`를 통해 접근할 수 있습니다. 예상대로, `MIX_ENV` 환경 변수를 통해 실행 환경을 변경할 수 있습니다. ```bash $ MIX_ENV=prod mix compile diff --git a/ko/lessons/basics/modules.md b/ko/lessons/basics/modules.md index fca3746d0f..02056f985f 100644 --- a/ko/lessons/basics/modules.md +++ b/ko/lessons/basics/modules.md @@ -62,7 +62,7 @@ Elixir에서 여러가지 다른 용도로 사용하는 속성도 있다는 점 + `moduledoc` — 현재 모듈을 설명하는 문서입니다. + `doc` — 함수와 매크로를 설명하는 문서입니다. -+ `behaviour` — OTP나 사용자가 따로 정의할 수 있는 행동에서 사용됩니다. ++ `behaviour` — OTP나 사용자가 따로 정의할 수 있는 비헤이비어에서 사용됩니다. ## 구조체 @@ -166,7 +166,7 @@ iex> last([1, 2, 3]) 기본적으로는 모든 함수와 매크로가 불려오지만 `:only`나 `:except` 옵션을 사용해서 특정 함수나 매크로만 불러올 수 있습니다. -특정 함수나 매크로를 불러오려면, `:only`와 `:except`에 이름/애리티 쌍을 넘겨 주면 됩니다. `last/1` 함수만 불러오는 것부터 시작해보도록 하지요. +특정 함수나 매크로를 불러오려면, `:only`와 `:except`에 이름/인자 개수 쌍을 넘겨 주면 됩니다. `last/1` 함수만 불러오는 것부터 시작해보도록 하지요. ```elixir iex> import List, only: [last: 1] @@ -187,7 +187,7 @@ iex> last([1, 2, 3]) ** (CompileError) iex:3: undefined function last/1 ``` -불러올 조건에 이름/애리티 쌍을 건네줄 수도 있지만, 여기서 한걸음 더 나아가서 `:functions`와 `:macros`라는 특별한 애텀을 사용해 함수만, 혹은 매크로만 불러오게 할 수도 있습니다. +불러올 조건에 이름/인자 개수 쌍을 건네줄 수도 있지만, 여기서 한걸음 더 나아가서 `:functions`와 `:macros`라는 특별한 애텀을 사용해 함수만, 혹은 매크로만 불러오게 할 수도 있습니다. ```elixir import List, only: :functions diff --git a/ko/lessons/basics/pipe-operator.md b/ko/lessons/basics/pipe-operator.md index e557954fe7..ed679002b8 100644 --- a/ko/lessons/basics/pipe-operator.md +++ b/ko/lessons/basics/pipe-operator.md @@ -12,7 +12,7 @@ lang: ko ## 소개 -프로그래밍을 하다보면 코드가 지저분해집니다. 함수의 호출이 따라가기 힘들 정도로 많이 중첩되어 지저분해질 수도 있습니다. 아래 중첩된 함수 호출을 생각해 봅시다. +프로그래밍을 하다보면 코드가 지저분해질 수 있습니다. 함수의 호출이 따라가기 힘들 정도로 많이 중첩되어 지저분해질 정도로요. 아래 중첩된 함수 호출을 생각해 봅시다. ```elixir foo(bar(baz(new_function(other_function())))) @@ -53,7 +53,7 @@ true ## 좋은 습관 -함수의 애리티가 1 이상이면 반드시 괄호를 쓰세요. 이는 Elixir에게는 큰 문제가 되지 않지만 다른 프로그래머가 여러분의 코드를 잘못 이해할 수도 있기 때문입니다. 세 번째 예제에서 `String.ends_with?/2`의 괄호를 지우면 아래와 같은 경고를 보게 됩니다. +함수의 인자 개수가 1 이상이면 반드시 괄호를 쓰세요. 이는 Elixir에게는 큰 문제가 되지 않지만 다른 프로그래머가 여러분의 코드를 잘못 이해할 수도 있기 때문입니다. 세 번째 예제에서 `String.ends_with?/2`의 괄호를 지우면 아래와 같은 경고를 보게 됩니다. ```shell iex> "elixir" |> String.ends_with? "ixir" @@ -69,4 +69,3 @@ foo(1) |> bar(2) |> baz(3) true ``` -