Skip to content

Commit

Permalink
[KO] Updated translation (elixirschool#652)
Browse files Browse the repository at this point in the history
- Updated basic funtions
- Removed colon at the end of sentences.
- Unified translated words: arity, behaviour
- Applied Other minor fixes and reviewes from fabulous people.
  • Loading branch information
marocchino authored and yosangwon committed Sep 5, 2016
1 parent 777001f commit 8c5994c
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 29 deletions.
2 changes: 1 addition & 1 deletion ko/lessons/advanced/metaprogramming.md
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ iex> Example.double_puts(:os.system_time)
1450475941851733000
```

시간이 다릅니다! 무슨 일이 있었던 걸까요? `unquote/1`를 같은 표현식에 여러번 사용하는 것은 재평가를 발생시키며 예상치 못한 결과를 가져옵니다. `bind_quoted`를 사용해서 예제를 변경해봅시다:
시간이 다릅니다! 무슨 일이 있었던 걸까요? `unquote/1`를 같은 표현식에 여러 번 사용하는 것은 재평가를 발생시키며 예상치 못한 결과를 가져옵니다. `bind_quoted`를 사용해서 예제를 변경해봅시다:

```elixir
defmodule Example do
Expand Down
45 changes: 31 additions & 14 deletions ko/lessons/basics/functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Elixir를 포함한 많은 함수형 언어에서, 함수들은 일급 시민입

익명 함수는 말그대로 이름이 없습니다. `Enum` 수업에서 보았듯이, 함수는 빈번히 다른 함수로 넘겨지게 됩니다. Elixir에서 익명 함수를 정의하기 위해, `fn` 그리고 `end` 키워드가 필요합니다. 익명 함수 내에서 매개변수의 개수를 정의할 수 있으며, 함수의 몸체는 `->`로 구분됩니다.

기초적인 예제를 보도록 합시다:
기초적인 예제를 보도록 합시다.

```elixirre
iex> sum = fn (a, b) -> a + b end
Expand All @@ -38,7 +38,7 @@ iex> sum.(2, 3)

Elixir에서 패턴매칭은 단순히 변수를 다루는 데서 그치지 않고, 함수 시그니처에서도 적용될 수 있다는 것을 이 섹션에서 확인할 것입니다.

매칭하여 대응되는 함수를 불러일으키는 매개변수의 집합을 식별하기 위해 패턴매칭을 사용합니다:
Elixir에서는 매칭하여 대응되는 함수를 불러일으키는 매개변수의 집합을 식별하기 위해 패턴매칭을 사용합니다.

```elixir
iex> handle_result = fn
Expand All @@ -58,7 +58,7 @@ An error has occurred!

차후에 호출할 수 있도록 함수를 이름과 같이 정의할 수 있습니다. 이는 모듈 내에서 `def` 키워드로 정의됩니다. 지금은 이름이 있는 함수를 다루는 것에 집중하도록 하고, 다음 수업에서 모듈에 대해 더 배울 것입니다.

모듈 내에서 정의된 함수는 다른 모듈에서 접근이 가능하며, 이는 Elixir에서 특히 유용한 요소 중 하나입니다.
모듈 내에서 정의된 함수는 다른 모듈에서 접근이 가능하며, 이는 Elixir에서 특히 유용한 요소 중 하나입니다.

```elixir
defmodule Greeter do
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -136,10 +159,9 @@ iex> Greeter.hello ["Sean", "Steve"]
"Hello, Sean, Steve"
```

### 디폴트 인자

인자에 디폴트 값을 할당하고 싶다면, `인자 \\ 값` 문법을 이용할 수 있습니다:
### 기본값 인자

인자에 기본값을 할당하고 싶다면, `인자 \\ 값` 문법을 이용할 수 있습니다:

```elixir
defmodule Greeter do
Expand All @@ -161,9 +183,7 @@ iex> Greeter.hello("Sean", "es")
"Hola, Sean"
```


가드 예제에 디폴트 인자를 적용한 경우를 다뤄보도록 합시다. 아마, 다음과 같이 나타낼 수 있을 겁니다.

가드 예제에 기본값 인자를 적용한 경우를 다뤄보도록 합시다. 아마 다음과 같이 나타낼 수 있을 겁니다.

```elixir
defmodule Greeter do
Expand All @@ -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
Expand All @@ -211,4 +229,3 @@ iex> Greeter.hello ["Sean", "Steve"]
iex> Greeter.hello ["Sean", "Steve"], "es"
"Hola, Sean, Steve"
```

16 changes: 8 additions & 8 deletions ko/lessons/basics/mix.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ $ mix new example
* creating test/example_test.exs
```

이번 수업에서는 `mix.exs` 파일에만 관심을 두고 살펴보도록 하겠습니다. 이 파일에서 우리가 방금 시작한 프로젝트와 프로젝트가 필요로 하는 의존성과 환경, 버전을 이해할 수 있습니다. 가장 좋아하는 에디터로 이 파일을 열었다면 이렇게 보일 것입니다. 주석은 생략하겠습니다:
이번 수업에서는 `mix.exs` 파일에만 관심을 두고 살펴보도록 하겠습니다. 이 파일에서 우리가 방금 시작한 프로젝트와 프로젝트가 필요로 하는 의존성과 환경, 버전을 이해할 수 있습니다. 가장 좋아하는 에디터로 이 파일을 열었다면 이렇게 보일 것입니다. 주석은 생략하겠습니다.

```elixir
defmodule Example.Mixfile do
Expand Down Expand Up @@ -66,13 +66,13 @@ end

## 대화형 셸에서 만나보기

응용 프로그램을 사용하고 설정할 수 있는 환경에서 `iex`을 사용하면 편할 때가 올 수도 있습니다. 다행스럽게도 mix를 사용해서 간단하게 사용할 수 있습니다. `iex` 세션을 이렇게 실행하게 되면:
응용 프로그램을 사용하고 설정할 수 있는 환경에서 `iex`을 사용하면 편할 때가 올 수도 있습니다. 다행스럽게도 mix를 사용해서 간단하게 사용할 수 있습니다. `iex` 세션을 이렇게 실행하실 수 있습니다.

```bash
$ iex -S mix
```

현재 애플리케이션과 의존성을 현재 런타임으로 불러와 `iex`를 실행할 수 있습니다.
그러면, 현재 애플리케이션과 의존성을 현재 런타임으로 불러와 `iex`를 실행할 수 있습니다.

## 컴파일하기

Expand All @@ -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
Expand All @@ -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
Expand Down
6 changes: 3 additions & 3 deletions ko/lessons/basics/modules.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ Elixir에서 여러가지 다른 용도로 사용하는 속성도 있다는 점

+ `moduledoc` — 현재 모듈을 설명하는 문서입니다.
+ `doc` — 함수와 매크로를 설명하는 문서입니다.
+ `behaviour` — OTP나 사용자가 따로 정의할 수 있는 행동에서 사용됩니다.
+ `behaviour` — OTP나 사용자가 따로 정의할 수 있는 비헤이비어에서 사용됩니다.

## 구조체

Expand Down Expand Up @@ -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]
Expand All @@ -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
Expand Down
5 changes: 2 additions & 3 deletions ko/lessons/basics/pipe-operator.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ lang: ko

## 소개

프로그래밍을 하다보면 코드가 지저분해집니다. 함수의 호출이 따라가기 힘들 정도로 많이 중첩되어 지저분해질 수도 있습니다. 아래 중첩된 함수 호출을 생각해 봅시다.
프로그래밍을 하다보면 코드가 지저분해질 수 있습니다. 함수의 호출이 따라가기 힘들 정도로 많이 중첩되어 지저분해질 정도로요. 아래 중첩된 함수 호출을 생각해 봅시다.

```elixir
foo(bar(baz(new_function(other_function()))))
Expand Down Expand Up @@ -53,7 +53,7 @@ true

## 좋은 습관

함수의 애리티가 1 이상이면 반드시 괄호를 쓰세요. 이는 Elixir에게는 큰 문제가 되지 않지만 다른 프로그래머가 여러분의 코드를 잘못 이해할 수도 있기 때문입니다. 세 번째 예제에서 `String.ends_with?/2`의 괄호를 지우면 아래와 같은 경고를 보게 됩니다.
함수의 인자 개수가 1 이상이면 반드시 괄호를 쓰세요. 이는 Elixir에게는 큰 문제가 되지 않지만 다른 프로그래머가 여러분의 코드를 잘못 이해할 수도 있기 때문입니다. 세 번째 예제에서 `String.ends_with?/2`의 괄호를 지우면 아래와 같은 경고를 보게 됩니다.

```shell
iex> "elixir" |> String.ends_with? "ixir"
Expand All @@ -69,4 +69,3 @@ foo(1) |> bar(2) |> baz(3)

true
```

0 comments on commit 8c5994c

Please sign in to comment.