Skip to content

%s/메소드/메서드/g #1875

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 8, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions ko/about/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,14 @@ lang: ko
스크립트 언어가 필요했다<sup>[2](#fn2)</sup>.”라고 했습니다.

루비에서는 모든 것이 객체입니다. 따라서 루비에서 모든 것은 자신만의 속성과 액션을 갖습니다. 객체지향 프로그래밍에서 이런 속성을
*인스턴스 변수*라고 하고, 액션을 *메소드*라고 합니다. 루비의 순수 객체지향 접근법은 아래의 예제처럼 숫자에 액션을 취하는
*인스턴스 변수*라고 하고, 액션을 *메서드*라고 합니다. 루비의 순수 객체지향 접근법은 아래의 예제처럼 숫자에 액션을 취하는
코드로 대표되곤 합니다.

{% highlight ruby %}
5.times { print "우리는 루비를 *사랑*해요! 너무 멋져요!" }
{% endhighlight %}

많은 언어에서 숫자는 원시 타입이지 객체는 아닙니다. 하지만 루비는 스몰토크의 영향을 받아 모든 형태의 것에 메소드와 인스턴스
많은 언어에서 숫자는 원시 타입이지 객체는 아닙니다. 하지만 루비는 스몰토크의 영향을 받아 모든 형태의 것에 메서드와 인스턴스
변수를 부여합니다. 이는 모든 곳에서 일관되게 적용되므로 루비 사용법을 쉽게 해줍니다.

### 루비의 유연함
Expand All @@ -57,7 +57,7 @@ lang: ko
않습니다.

예를 들어 아래는 `+` 연산자 대신 plus 라고 쓰는 것이 더 읽기 편하다고 결정했다면 루비의 빌트인 클래스인
`Numeric`에 메소드를 추가하면 됩니다.
`Numeric`에 메서드를 추가하면 됩니다.

{% highlight ruby %}
class Numeric
Expand All @@ -70,11 +70,11 @@ y = 5.plus 6
# 이제 y는 11이 되었다
{% endhighlight %}

루비의 연산자는 메소드를 이용한 문법 단축에 불과합니다. 물론 이 부분도 재정의할 수 있습니다.
루비의 연산자는 메서드를 이용한 문법 단축에 불과합니다. 물론 이 부분도 재정의할 수 있습니다.

### 루비의 표현력을 풍부하게 해주는 블록

루비의 블록 기능 또한 뛰어난 유연성의 원천입니다. 개발자는 어떤 메소드에든 클로저를 추가함으로써 메소드의 동작을 기술할 수
루비의 블록 기능 또한 뛰어난 유연성의 원천입니다. 개발자는 어떤 메서드에든 클로저를 추가함으로써 메서드의 동작을 기술할 수
있습니다. 루비에서 이 클로저를 *블록*이라고 부릅니다. 이는 PHP, 비주얼베이직 등 다른 명령형 언어에서 루비로 이주한
개발자에게 가장 매력적인 기능으로 꼽힙니다.

Expand All @@ -88,15 +88,15 @@ search_engines =
end
{% endhighlight %}

위 예제에서 블록은 `do ... end` 문법 구조에 기술되었습니다. `map` 메소드는 주어진 단어 목록에 블록을 적용합니다.
이처럼 루비의 다른 메소드도 그 동작 중 일부를 자신의 블록으로 채워넣을 수 있도록 개발자에게 열린 구조를 제공하고 있습니다.
위 예제에서 블록은 `do ... end` 문법 구조에 기술되었습니다. `map` 메서드는 주어진 단어 목록에 블록을 적용합니다.
이처럼 루비의 다른 메서드도 그 동작 중 일부를 자신의 블록으로 채워넣을 수 있도록 개발자에게 열린 구조를 제공하고 있습니다.

### 루비와 믹스인

다른 객체지향 언어와 달리 루비는 **의도적으로** 단일 상속만을 제공합니다. 대신 루비에는 모듈 개념(Objective-C에서는
카테고리라 불리는)이 있습니다. 모듈은 메소드의 컬렉션입니다.
카테고리라 불리는)이 있습니다. 모듈은 메서드의 컬렉션입니다.

클래스에 모듈을 믹스인할 수 있는데, 그렇게 하면 유용한 메소드를 손쉽게 얻을 수 있습니다. 예를 들어 `each` 메소드를 구현하고
클래스에 모듈을 믹스인할 수 있는데, 그렇게 하면 유용한 메서드를 손쉽게 얻을 수 있습니다. 예를 들어 `each` 메서드를 구현하고
있는 클래스는 어떤 것이든 `Enumerable` 모듈을 믹스인하기만 하면, `each`를 루프에 이용해 많은 함수들이 추가됩니다.

{% highlight ruby %}
Expand All @@ -116,7 +116,7 @@ end
* `@var` 인스턴스 변수.
* `$var` 전역변수.

이런 몇 가지 장치는 변수의 역할을 명확히 드러냄으로써 개발자가 코드를 읽기 쉽게 해줍니다. 그리고 모든 인스턴스 메소드에
이런 몇 가지 장치는 변수의 역할을 명확히 드러냄으로써 개발자가 코드를 읽기 쉽게 해줍니다. 그리고 모든 인스턴스 메서드에
붙인다면 정말 피곤할 `self.`도 대부분 생략할 수 있습니다.

### 고급 기능
Expand Down
18 changes: 9 additions & 9 deletions ko/documentation/quickstart/2/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ header: |

---

손가락에 무리를 주지 않으면서 “Hello”를 여러 번 말하고 싶다면 어떻게 해야 할까요? 메소드를 정의해야 한답니다.
손가락에 무리를 주지 않으면서 “Hello”를 여러 번 말하고 싶다면 어떻게 해야 할까요? 메서드를 정의해야 한답니다.

{% highlight irb %}
irb(main):010:0> def h
Expand All @@ -26,15 +26,15 @@ irb(main):012:1> end
=> :h
{% endhighlight %}

`def h`는 메소드의 정의의 시작입니다. 루비에게 `h`란 이름의 메소드의 정의를
시작한다는 것을 알리는 것이죠. 그 다음 줄은 메소드 몸통(body)입니다. 전에 본 것과
`def h`는 메서드의 정의의 시작입니다. 루비에게 `h`란 이름의 메서드의 정의를
시작한다는 것을 알리는 것이죠. 그 다음 줄은 메서드 몸통(body)입니다. 전에 본 것과
같은 `puts "Hello World"`입니다.
마지막으로 `end`는 루비에게 메소드 정의가 끝났음을 알려줍니다.
`=> :h`은 메소드의 정의가 끝났음을 루비가 알아들었다는 것을 의미하죠.
마지막으로 `end`는 루비에게 메서드 정의가 끝났음을 알려줍니다.
`=> :h`은 메서드의 정의가 끝났음을 루비가 알아들었다는 것을 의미하죠.
루비 2.0이나 그 이전 버전이라면 이 반환 값은 `=> nil`이 될 수도 있습니다.
하지만 여기에서는 별로 중요하지 않으니 다음으로 넘어갑시다.

이제 정의한 메소드를 몇 번 호출해 보겠습니다.
이제 정의한 메서드를 몇 번 호출해 보겠습니다.

{% highlight irb %}
irb(main):013:0> h
Expand All @@ -45,7 +45,7 @@ Hello World!
=> nil
{% endhighlight %}

생각보다 쉽지 않나요? 루비에서 메소드를 호출하는 것은 단지 메소드 이름을 입력하는 것에 지나지 않지요. 메소드가 인자를 받지
생각보다 쉽지 않나요? 루비에서 메서드를 호출하는 것은 단지 메서드 이름을 입력하는 것에 지나지 않지요. 메서드가 인자를 받지
않는다면, 그걸로 충분하답니다. 빈 괄호를 입력해도 되지만, 필요한 것은 아니랍니다.

온세상에 “Hello”라고 외치는 대신에 특정 사람에게 인사를 건네고 싶다면 어떻게 해야
Expand Down Expand Up @@ -107,8 +107,8 @@ irb(main):034:1> end
=> nil
{% endhighlight %}

새로운 키워드 `class`가 나왔군요. 위에서는 새로운 “Greeter” 클래스와 메소드가
정의되고 있습니다. 또 `@name`도 보이네요. 이는 인스턴스 변수로 모든 메소드에서
새로운 키워드 `class`가 나왔군요. 위에서는 새로운 “Greeter” 클래스와 메서드가
정의되고 있습니다. 또 `@name`도 보이네요. 이는 인스턴스 변수로 모든 메서드에서
접근이 가능합니다. 보다시피 `say_hi`와 `say_bye`에서 사용되고 있습니다.

어떻게 이 “Greeter” 클래스를 사용하냐구요? [객체를 만들면](../3/) 됩니다.
Expand Down
20 changes: 10 additions & 10 deletions ko/documentation/quickstart/3/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ SyntaxError: compile error
## 객체 들여다보기

객체 변수는 객체 안에 숨겨져 있습니다. 사실 객체 변수가 그렇게 꽁꽁 숨겨져 있는 것은 아니지만, 루비는 기본적으로 데이터를
숨겨두는 객체지향 방식을 따르고 있습니다. “Greeter”의 객체들에는 어떤 메소드가 들어있을까요?
숨겨두는 객체지향 방식을 따르고 있습니다. “Greeter”의 객체들에는 어떤 메서드가 들어있을까요?

{% highlight irb %}
irb(main):039:0> Greeter.instance_methods
Expand All @@ -60,17 +60,17 @@ irb(main):039:0> Greeter.instance_methods
"instance_variables", "instance_of?"]
{% endhighlight %}

메소드가 상당히 많은 것을 알 수 있습니다. 우리가 정의한 메소드는 2개에 불과한데
어떻게 된 것일까요? 위의 목록은 “Greeter” 객체들의 메소드뿐만 아니라 **모든**
상속된 메소드도 포함하고 있기 때문입니다. `false`를 인자로 넘기면 부모 클래스에
정의된 메소드를 제외한 목록을 볼 수 있습니다.
메서드가 상당히 많은 것을 알 수 있습니다. 우리가 정의한 메서드는 2개에 불과한데
어떻게 된 것일까요? 위의 목록은 “Greeter” 객체들의 메서드뿐만 아니라 **모든**
상속된 메서드도 포함하고 있기 때문입니다. `false`를 인자로 넘기면 부모 클래스에
정의된 메서드를 제외한 목록을 볼 수 있습니다.

{% highlight irb %}
irb(main):040:0> Greeter.instance_methods(false)
=> ["say_bye", "say_hi"]
{% endhighlight %}

우리의 “greeter” 객체가 어떤 메소드에 응답하는지를 개별적으로 확인하는 것도 가능합니다.
우리의 “greeter” 객체가 어떤 메서드에 응답하는지를 개별적으로 확인하는 것도 가능합니다.

{% highlight irb %}
irb(main):041:0> g.respond_to?("name")
Expand All @@ -81,9 +81,9 @@ irb(main):043:0> g.respond_to?("to_s")
=> true
{% endhighlight %}

즉, `say_hi`라는 이름의 메소드를 가지고 있고 `to_s`(어떤 객체를 문자열로 변환하는
메소드로 모든 객체가 가지고 있습니다.)라는 이름의 메소드도 가지고 있지만,
`name`이란 이름의 메소드에 응답하지는 않습니다.
즉, `say_hi`라는 이름의 메서드를 가지고 있고 `to_s`(어떤 객체를 문자열로 변환하는
메서드로 모든 객체가 가지고 있습니다.)라는 이름의 메서드도 가지고 있지만,
`name`이란 이름의 메서드에 응답하지는 않습니다.

## 클래스 정의 변경하기-늦었다고 생각할 때가 가장 빠른 때죠

Expand Down Expand Up @@ -122,7 +122,7 @@ Hi Betty!
=> nil
{% endhighlight %}

`attr_accessor`은 두 개의 메소드를 새로 정의해줍니다. `name`은 인스턴스 변수의
`attr_accessor`은 두 개의 메서드를 새로 정의해줍니다. `name`은 인스턴스 변수의
값에 접근하기 위한 것이고 `name=`은 객체변수의 값을 변경하기 위한 것입니다.

## Mega Greeter
Expand Down
22 changes: 11 additions & 11 deletions ko/documentation/quickstart/4/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ header: |
주석으로 프로그램 실행시에 무시됩니다. 파일의 첫 번째 줄은 다소 예외적인 경우인데, 유닉스 계열의 운영체제에서 어떻게 이 파일을
실행할 수 있는지를 알려주는 역할을 합니다. 다른 주석은 단지 코드를 이해하기 쉽게 하기 위해서 위해 있을 뿐입니다.

`say_hi` 메소드가 조금 더 복잡해졌습니다.
`say_hi` 메서드가 조금 더 복잡해졌습니다.

{% highlight ruby %}
# Say hi to everybody
Expand All @@ -39,7 +39,7 @@ def say_hi
end
{% endhighlight %}

`say_hi` 메소드는 이제 결정을 내리기 위해 `@names` 인스턴스 변수의 내용을 확인합니다.
`say_hi` 메서드는 이제 결정을 내리기 위해 `@names` 인스턴스 변수의 내용을 확인합니다.
만약 `@names`가 nil이라면, 세 개의 점을 출력하게 되죠. 존재하지 않는 사람에게 인사를
할 필요는 없을 테니 말입니다.

Expand All @@ -59,7 +59,7 @@ end
{% endhighlight %}

`each`는 코드 블록을 넘겨 받아서 리스트의 각 원소에 순차적으로 이를 적용시키는
메소드입니다. `do`와 `end` 사이의 코드가 바로 블록이지요. 블록은 익명 함수 또는
메서드입니다. `do`와 `end` 사이의 코드가 바로 블록이지요. 블록은 익명 함수 또는
`lambda`와 유사하다고 볼 수 있습니다. 두개의 `|` 사이의 변수는 이 블록에 넘겨지는
매개 변수입니다.

Expand All @@ -79,8 +79,8 @@ for (i=0; i<number_of_elements; i++)
물론 위의 코드는 잘 작동합니다. 하지만 그다지 우아하지는 않지요. 임시 변수인 `i`가
필요한 데다가, 리스트의 길이가 얼마인지도 계산해야 하지요. 그리고 리스트의 내용물을
접근하는 코드도 작성해야 합니다. 루비의 방식이 훨씬 더 우아합니다. 핵심적이지 않은
코드는 `each` 메소드 안에 숨겨져 버렸지요. 단지 각 내용물을 가지고 무엇을 할 것인지만
코딩하면 됩니다. 내부적으로 `each` 메소드는 `yield "Albert"`를 하고 `yield "Brenda"`를
코드는 `each` 메서드 안에 숨겨져 버렸지요. 단지 각 내용물을 가지고 무엇을 할 것인지만
코딩하면 됩니다. 내부적으로 `each` 메서드는 `yield "Albert"`를 하고 `yield "Brenda"`를
하고 `yield "Charles"` 등등을 계속 호출함으로써 리스트의 내용물을 블록에 넘겨줍니다.

## 루비에서의 전가의 보도, 블록
Expand All @@ -102,16 +102,16 @@ def say_bye
end
{% endhighlight %}

`say_bye` 메소드는 `each` 메소드를 사용하지 않는군요. `say_bye` 메소드는 단지 `@names`가
`join` 메소드를 가졌는지 확인하고, 가지고 있다면 `join` 하고 있습니다. 그렇지 않다면, 변수를 문자열로 출력만 합니다. 이
메소드는 변수의 실제 *타입*은 신경을 쓰지 않는군요. 이처럼 단지 어떤 메소드만을 가지고 있는지에 의존하는 것을 덕 타이핑(Duck
`say_bye` 메서드는 `each` 메서드를 사용하지 않는군요. `say_bye` 메서드는 단지 `@names`가
`join` 메서드를 가졌는지 확인하고, 가지고 있다면 `join` 하고 있습니다. 그렇지 않다면, 변수를 문자열로 출력만 합니다. 이
메서드는 변수의 실제 *타입*은 신경을 쓰지 않는군요. 이처럼 단지 어떤 메서드만을 가지고 있는지에 의존하는 것을 덕 타이핑(Duck
Typing)이라고 부릅니다. “만약 오리처럼 걷고 오리처럼 꽥꽥거리면...”에서처럼 말입니다. 이런 방식의 장점은 어떤 타입의
변수를 지원할 것인지를 제한할 필요가 없다는 것입니다. 만약 누군가가 새로운 종류의 list 클래스를 정의했다고 해도, 거기에
`join` 메소드만 정의되어 있으면 잘 동작 할 것입니다.
`join` 메서드만 정의되어 있으면 잘 동작 할 것입니다.

## 스크립트 실행하기

“MegaGreeter” 클래스는 그게 전부입니다. 나머지 코드는 단지 클래스의 메소드를 호출할 뿐이지요. 아, 설명하지 않은 것이
“MegaGreeter” 클래스는 그게 전부입니다. 나머지 코드는 단지 클래스의 메서드를 호출할 뿐이지요. 아, 설명하지 않은 것이
한 가지 더 있군요. 다음의 코드입니다.

{% highlight ruby %}
Expand All @@ -125,7 +125,7 @@ if __FILE__ == $0
## 이제 기초는 다 익혔습니다

루비를 잠깐 둘러 보았습니다. 물론 훨씬 더 많은 것들이 기다리고 있습니다. 루비가 제공하는 여러 제어문들, 블록의 사용과
“yield” 메소드, 모듈과 믹스인, 그리고 훨씬 더 많은 것들이요. 이 짧은 튜토리얼이 여러분이 루비를 더 배워보고 싶게
“yield” 메서드, 모듈과 믹스인, 그리고 훨씬 더 많은 것들이요. 이 짧은 튜토리얼이 여러분이 루비를 더 배워보고 싶게
했으면 하는 바람입니다.

만약 그랬다면, 매뉴얼과 튜토리얼 등이 소개되어 있는 [문서 섹션](/ko/documentation)으로 가 보세요. 모두
Expand Down
10 changes: 5 additions & 5 deletions ko/documentation/quickstart/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,17 +107,17 @@ irb(main):006:0> Math.sqrt(9)

`Math`는 수학계산을 위한 내부 모듈입니다. 루비에서 모듈은 두 가지
역할을 합니다. 위의 예는 이중 한 가지를 보여주고 있습니다. 즉, 관련이
있는 여러 메소드를 하나의 이름으로 묶어두는 것이지요. `Math`에는
`sin()`과 `tan()` 같은 메소드도 들어있답니다.
있는 여러 메서드를 하나의 이름으로 묶어두는 것이지요. `Math`에는
`sin()`과 `tan()` 같은 메서드도 들어있답니다.

다음은 점을 설명할 차례군요. 점은 무슨 역할을 할까요? 점은 메시지와
메시지를 받는 대상을 구분하여 줍니다. 메시지가 무엇이냐구요? 위의
예제의 경우 메시지는 `sqrt(9)`입니다. 이는 "제곱근"을 의미하는
`sqrt` 메소드를 호출하며 `9`를 매개 변수로 넘기라는 의미입니다.
`sqrt` 메서드를 호출하며 `9`를 매개 변수로 넘기라는 의미입니다.

메소드 호출의 결과 값은 `3.0`입니다. 그냥 `3`이 아니라는 걸
메서드 호출의 결과 값은 `3.0`입니다. 그냥 `3`이 아니라는 걸
눈치채셨는지요? 사실 대부분의 경우에 제곱근의 값은 정수가 아니므로
`sqrt` 메소드는 언제나 실수를 반환합니다.
`sqrt` 메서드는 언제나 실수를 반환합니다.

계산의 결과 값을 저장해두고 싶다면 어떻게 해야 할까요? 변수에 할당해두면
됩니다.
Expand Down
Loading