[SCALA] 디폴트가 사용됩니다 암시하는 변환을 제어 할 수있는 방법이 있습니까?
SCALA디폴트가 사용됩니다 암시하는 변환을 제어 할 수있는 방법이 있습니까?
나는이 있다고 가정 해 봅시다 :
class String2(val x:String) {
def *(times:Int) : String = {
val builder = new StringBuilder()
for( i <- 0 until times) {
builder.append(x)
}
builder.toString()
}
}
지금은이 암시를 추가하는 경우 :
implicit def gimmeString2(y:String) = new String2(y)
stringWrapper는이 암시를 추가하기 때문에 나는 컴파일 오류가 발생합니다. "이 사용하는 다른 implicits 무시"컴파일러에 말하는 방법이있다, 그래서 나는 그에서 문자열 2 객체와 작업을 인스턴스화 할 필요가 없습니다?
나는 예제 코드 (이 질문에 대한) 가장 적절하지 않을 수 있습니다 인정,하지만 난 그것을 할 것입니다 생각합니다.
해결법
-
==============================
1.스칼라 2.8 implicits에 대한 우선 순위 시스템을 추가했다. 그것은 새로운 자바 배열에이 SIP에 설명 된 것 :
스칼라 2.8 implicits에 대한 우선 순위 시스템을 추가했다. 그것은 새로운 자바 배열에이 SIP에 설명 된 것 :
결론 그 대안이 동일한 인수 유형, 서브 클래스에 정의 된 일이있는 경우 승리합니다. 그래서 나는 다음과 같이 implicits를 선언 할 수 있다고 생각 :
trait LowPriorityImplicits { //lower priority conversions } object HighPriorityImplicits extends LowPriorityImplicits { //higher-order ones here }
from https://stackoverflow.com/questions/1886953/is-there-a-way-to-control-which-implicit-conversion-will-be-the-default-used by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 어떻게 목록 Column.isin를 사용 하는가? (0) | 2019.11.07 |
---|---|
[SCALA] 미래의 내 보낸 (0) | 2019.11.07 |
[SCALA] int로는 null이 될 수없는 경우, null.asInstanceOf [지능]은 무엇을 의미합니까? (0) | 2019.11.07 |
[SCALA] JSObject를 어떠한 JSON 시리얼 타입 play.api.libs.json.JsObject에 대한 발견 (0) | 2019.11.07 |
[SCALA] unionAll을 여러 dataframes 불꽃 (0) | 2019.11.07 |