[SCALA] 어떻게 여러 개의 입력과 implicits는 스칼라에서 사용할 수 있습니까?
SCALA어떻게 여러 개의 입력과 implicits는 스칼라에서 사용할 수 있습니까?
예를 들어, 내가 어떻게 다음은 암시 적으로 적용되는 표현을 쓸 수 있습니다 :
implicit def intsToString(x: Int, y: Int) = "test"
val s: String = ... //?
감사
해결법
-
==============================
1.하나 개의 인수의 암시 적 기능이 자동으로 예상되는 유형으로 값을 변환하는 데 사용됩니다. 이러한 암시보기로 알려져 있습니다. 두 개의 인수, 그것은 일을하거나 화장의 의미하지 않습니다.
하나 개의 인수의 암시 적 기능이 자동으로 예상되는 유형으로 값을 변환하는 데 사용됩니다. 이러한 암시보기로 알려져 있습니다. 두 개의 인수, 그것은 일을하거나 화장의 의미하지 않습니다.
당신은 TupleN에 암시 적 관점을 적용 할 수 있습니다 :
implicit def intsToString( xy: (Int, Int)) = "test" val s: String = (1, 2)
또한 암시와 같은 함수의 마지막 매개 변수 목록을 표시 할 수 있습니다.
def intsToString(implicit x: Int, y: Int) = "test" implicit val i = 0 val s: String = intsToString
또는 암시의 두 가지 용도를 결합 :
implicit def intsToString(implicit x: Int, y: Int) = "test" implicit val i = 0 val s: String = implicitly[String]
그러나이 경우 정말 유용하지 않습니다.
최신 정보
마틴의 의견에 자세히 설명하기 위해이 가능합니다.
implicit def foo(a: Int, b: Int) = 0 // ETA expansion results in: // implicit val fooFunction: (Int, Int) => Int = (a, b) => foo(a, b) implicitly[(Int, Int) => Int]
-
==============================
2.하나의 매우 중요한 경우 밖으로 제이슨의 대답 미스 : 모든하지만 첫 번째 암시되어 여러 인수 ...이 두 개의 매개 변수 목록을 필요로 암시 적 기능,하지만 문제는 표현 된 방법을 지정된 범위 밖으로 될 것 같지 않습니다.
하나의 매우 중요한 경우 밖으로 제이슨의 대답 미스 : 모든하지만 첫 번째 암시되어 여러 인수 ...이 두 개의 매개 변수 목록을 필요로 암시 적 기능,하지만 문제는 표현 된 방법을 지정된 범위 밖으로 될 것 같지 않습니다.
여기에 두 개의 인수를 암시 적 변환의 예입니다,
case class Foo(s : String) case class Bar(i : Int) implicit val defaultBar = Bar(23) implicit def fooIsInt(f : Foo)(implicit b : Bar) = f.s.length+b.i
샘플 REPL 세션,
scala> case class Foo(s : String) defined class Foo scala> case class Bar(i : Int) defined class Bar scala> implicit val defaultBar = Bar(23) defaultBar: Bar = Bar(23) scala> implicit def fooIsInt(f : Foo)(implicit b : Bar) = f.s.length+b.i fooIsInt: (f: Foo)(implicit b: Bar)Int scala> val i : Int = Foo("wibble") i: Int = 29
from https://stackoverflow.com/questions/2416733/how-can-implicits-with-multiple-inputs-be-used-in-scala by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 어떻게 스칼라 방법 정적을해야합니까? (0) | 2019.11.23 |
---|---|
[SCALA] 어레이 스파크 SQL의 요소 범위를 선택 (0) | 2019.11.23 |
[SCALA] 어떻게 스파크 많은 파티션으로 마루 파일을 분할하려면? (0) | 2019.11.23 |
[SCALA] 스칼라 : 릴리스 간 바이너리 호환성 (0) | 2019.11.23 |
[SCALA] 스칼라 API와 불꽃 Dataframe에 TSV 읽기 (0) | 2019.11.23 |