From 67a2234cd8fd0085c49bdee4a3b41f75991ff0b2 Mon Sep 17 00:00:00 2001 From: Jihyung Lee Date: Sun, 2 Aug 2020 00:35:12 +0900 Subject: [PATCH 1/2] fixed typo and apply updates in English ver --- _ko/tour/implicit-conversions.md | 33 ++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/_ko/tour/implicit-conversions.md b/_ko/tour/implicit-conversions.md index d6d211895c..bfad32d888 100644 --- a/_ko/tour/implicit-conversions.md +++ b/_ko/tour/implicit-conversions.md @@ -10,33 +10,35 @@ next-page: polymorphic-methods previous-page: implicit-parameters --- -타입 `S`로부터 타입 `T`로의 암시적 변환는 함수 타입 `S => T`의 암시적 값이나 해당 타입으로 변환 가능한 암시적 메소드로 정의된다. +타입 `S`에서 타입 `T`로의 암시적 변환은 타입이 함수 `S => T`인 암시적 값이나 해당 타입으로 변환 가능한 암시적 메소드로 정의된다. 암시적 변환은 두 가지 상황에 적용된다. * 표현식 `e`의 타입이 `S`이고, `S`는 표현식의 기대 타입 `T`를 따르지 않을 때. -* `e`의 타입이 `T`인 `e.m`를 선택한 상황에서, 선택자 `m`이 `T`의 멤버가 아닐 때. +* 타입이 `S`인 `e`의 `e.m`을 선택한 상황에서, 선택자 `m`이 `S`의 멤버가 아닐 때. 첫 번째 경우에서 변환 `c`가 `e`에 적용되며, 결과 타입이 `T`를 따르는지 탐색한다. 두 번째 경우에선 변환 `c`가 `e`에 적용되며, 결과가 `m`이라는 이름의 멤버를 포함하고 있는지 탐색한다. -타입이 `List[Int]`인 두 리스트 xs와 ys의 아래 연산은 허용된다: +암시적 메서드인 `List[A] => Ordered[List[A]]`와 `Int => Ordered[Int]`가 범위 내에 있을 경우, 아래 타입이 `List[Int]`인 두 리스트의 연산은 허용된다: - xs <= ys + List(1, 2, 3) <= List(4, 5) -아래에 정의된 암시적 메소드 `list2ordered`와 `int2ordered`가 범위 안에 있다고 가정한다. +암시적 메서드 `Int => Ordered[Int]`는 `scala.Predef.intWrapper`를 통해 자동으로 제공된다. 암시적 메서드 `Int => Ordered[Int]`의 예시는 아래와 같다. + import scala.language.implicitConversions + implicit def list2ordered[A](x: List[A]) (implicit elem2ordered: a => Ordered[A]): Ordered[List[A]] = - new Ordered[List[A]] { /* .. */ } - - implicit def int2ordered(x: Int): Ordered[Int] = - new Ordered[Int] { /* .. */ } + new Ordered[List[A]] { + // 더 유용한 구현으로 대체하시오 + def compare(that: List[A]): Int = 1 + } -암시적으로 임포트되는 오브젝트 `scala.Predef`는 미리 정의된 여러 타입(예: `Pair`)과 메소드(예: `assert`)뿐만 아니라 여러 뷰도 함께 선언한다. +암시적으로 임포트되는 객체 `scala.Predef`는 자주 사용되는 타입들의 몇몇 별칭(예: 별칭이 `Map`인 `scala.collection.immutable.Map`)과 메소드(예: `assert`), 그리고 여러 암시적 변환을 선언한다. -예를들면, `java.lang.Integer`를 기대하는 자바 메서드를 호출할때, `scala.Int`를 대신 넘겨도 무방하다. 그 이유는 Predef가 아래 암시적 변환들을 포함하기 때문이다. +예를 들면, `java.lang.Integer`를 기대하는 자바 메서드를 호출할 때, `scala.Int`를 대신 넘겨도 된다. 그 이유는 Predef가 아래 암시적 변환을 포함하기 때문이다. ```tut import scala.language.implicitConversions @@ -45,15 +47,14 @@ implicit def int2Integer(x: Int) = java.lang.Integer.valueOf(x) ``` -암시적 변환이 무분별하게 사용될 경우 잠재적인 위험을 가질 수 있기 때문에, 컴파일러는 암시적 변환의 선언을 컴파일할때 경고한다. +암시적 변환이 무분별하게 사용될 경우 잠재적인 위험을 가질 수 있기 때문에, 컴파일러는 암시적 변환의 선언을 컴파일할 시 이를 경고한다. -To turn off the warnings take either of these actions: -경고를 끄기 위해서는 아래 중 하나를 선택해야 한다. +경고를 끄기 위해서는 아래 중 하나를 선택해야 한다: -* `scala.language.implicitConversions` 를 암시적 변환의 선언이 있는 범위로 import +* 암시적 변환의 정의가 있는 범위로 `scala.language.implicitConversions` 임포트 * `-language:implicitConversions` 옵션으로 컴파일러 실행 -변환이 컴팡일러에 의해 적용될때 경고가 발생하지 않는다. +컴파일러가 변환을 적용하면 경고가 발생하지 않는다. 윤창석, 이한욱 옮김, 고광현 업데이트 From 2034779b553daf4768ee8612f097b20b5d887bd9 Mon Sep 17 00:00:00 2001 From: Jihyung Lee Date: Thu, 1 Oct 2020 22:39:33 +0900 Subject: [PATCH 2/2] apply review comments --- _ko/tour/implicit-conversions.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/_ko/tour/implicit-conversions.md b/_ko/tour/implicit-conversions.md index bfad32d888..3b620ab090 100644 --- a/_ko/tour/implicit-conversions.md +++ b/_ko/tour/implicit-conversions.md @@ -18,25 +18,25 @@ previous-page: implicit-parameters * 타입이 `S`인 `e`의 `e.m`을 선택한 상황에서, 선택자 `m`이 `S`의 멤버가 아닐 때. -첫 번째 경우에서 변환 `c`가 `e`에 적용되며, 결과 타입이 `T`를 따르는지 탐색한다. -두 번째 경우에선 변환 `c`가 `e`에 적용되며, 결과가 `m`이라는 이름의 멤버를 포함하고 있는지 탐색한다. +첫 번째 경우, `e`에 적용되며 결과 타입이 `T`인 변환 `c`를 찾는다. +두 번째 경우, `e`에 적용되며 결과에 `m`이라는 이름의 멤버를 포함하는 변환 `c`를 찾는다. -암시적 메서드인 `List[A] => Ordered[List[A]]`와 `Int => Ordered[Int]`가 범위 내에 있을 경우, 아래 타입이 `List[Int]`인 두 리스트의 연산은 허용된다: +암시적 메서드인 `List[A] => Ordered[List[A]]`와 `Int => Ordered[Int]`가 범위 내에 있을 경우, 아래와 같이 타입이 `List[Int]`인 두 리스트의 연산은 허용된다: List(1, 2, 3) <= List(4, 5) -암시적 메서드 `Int => Ordered[Int]`는 `scala.Predef.intWrapper`를 통해 자동으로 제공된다. 암시적 메서드 `Int => Ordered[Int]`의 예시는 아래와 같다. +`scala.Predef.intWrapper`는 암시적 메서드 암시적 메서드 `Int => Ordered[Int]`를 자동으로 제공한다. 다음은 암시적 메서드 `Int => Ordered[Int]`의 예시이다. import scala.language.implicitConversions implicit def list2ordered[A](x: List[A]) - (implicit elem2ordered: a => Ordered[A]): Ordered[List[A]] = + (implicit elem2ordered: A => Ordered[A]): Ordered[List[A]] = new Ordered[List[A]] { // 더 유용한 구현으로 대체하시오 def compare(that: List[A]): Int = 1 } -암시적으로 임포트되는 객체 `scala.Predef`는 자주 사용되는 타입들의 몇몇 별칭(예: 별칭이 `Map`인 `scala.collection.immutable.Map`)과 메소드(예: `assert`), 그리고 여러 암시적 변환을 선언한다. +암시적으로 임포트되는 객체 `scala.Predef`는 자주 사용되는 타입의 별칭(예: `scala.collection.immutable.Map`의 별칭 `Map`)과 메소드(예: `assert`), 그리고 여러 암시적 변환을 선언한다. 예를 들면, `java.lang.Integer`를 기대하는 자바 메서드를 호출할 때, `scala.Int`를 대신 넘겨도 된다. 그 이유는 Predef가 아래 암시적 변환을 포함하기 때문이다. @@ -51,10 +51,10 @@ implicit def int2Integer(x: Int) = 경고를 끄기 위해서는 아래 중 하나를 선택해야 한다: -* 암시적 변환의 정의가 있는 범위로 `scala.language.implicitConversions` 임포트 +* 암시적 변환의 정의가 있는 범위 내에서 `scala.language.implicitConversions` 임포트 * `-language:implicitConversions` 옵션으로 컴파일러 실행 -컴파일러가 변환을 적용하면 경고가 발생하지 않는다. +컴파일러가 변환을 적용할 때에는 경고가 발생하지 않는다. 윤창석, 이한욱 옮김, 고광현 업데이트