복붙노트

[SCALA] 어떻게 스칼라에서 문자열 "+"연산자를 unimport하는?

SCALA

어떻게 스칼라에서 문자열 "+"연산자를 unimport하는?

나는 "+"연산자가 일부 다른 인기있는 언어처럼 엄격하게 숫자 인 DSL을 쓰고 있어요. 그것은 가까이 있지만, 문자열 "+"연산자 내 암시 적 변환을 엉망으로되어있다. String 클래스의 연산자를 unimporting에 대한 구문은 무엇입니까?

그냥이 대신에, 명확합니다 :

scala> var x = "2" + 3;
x: java.lang.String = 23

나는 좀하고 싶습니다 X : 지능 = 5

난 그냥 일어날 수 있도록 2 가지가 필요 상상 :

나는 첫 번째 단계에 갇혔어요.

감사

해결법

  1. ==============================

    1.스칼라 사양의 섹션 12.3.1에 따르면, 문자열에 대한 + 방법은 컴파일러에 의해 특별 대우를 가지고있다. 나는 확실히 모르겠지만, 나는 정말 (많은 관련 toString 메소드 같은) 타입 시스템을 나누기 때문에 수치이다, 그것은 "unimport"당신이 할 수없는이 방법을 생각한다.

    스칼라 사양의 섹션 12.3.1에 따르면, 문자열에 대한 + 방법은 컴파일러에 의해 특별 대우를 가지고있다. 나는 확실히 모르겠지만, 나는 정말 (많은 관련 toString 메소드 같은) 타입 시스템을 나누기 때문에 수치이다, 그것은 "unimport"당신이 할 수없는이 방법을 생각한다.

    당신은 당신의 DSL의 운영자, 예를 들어, ++ 또는 다른 이름을 사용할 수 있을까요?

  2. ==============================

    2.문자열의 방법 +는 String 클래스 (따라서 각 스트링 개체)에서의 방법, 그리고 그 같은 오지 않음 수 없다.

    문자열의 방법 +는 String 클래스 (따라서 각 스트링 개체)에서의 방법, 그리고 그 같은 오지 않음 수 없다.

  3. ==============================

    3.당신은 unimport 할 수는 없지만 + 사용할 수 있습니다와 INT의 클래스를 정의합니다. 이처럼 쓸 경우 어떻게 최선을 다 할 것입니다 것은 "2".toInt + 3.

    당신은 unimport 할 수는 없지만 + 사용할 수 있습니다와 INT의 클래스를 정의합니다. 이처럼 쓸 경우 어떻게 최선을 다 할 것입니다 것은 "2".toInt + 3.

  4. from https://stackoverflow.com/questions/2664274/how-to-unimport-string-operator-in-scala by cc-by-sa and MIT license