복붙노트

[SCALA] 스칼라의 지능과 정수의 차이점은 무엇입니까?

SCALA

스칼라의 지능과 정수의 차이점은 무엇입니까?

내가 정수로 선언하고 발견했다고 변수와 함께 일하는> 정수의 구성원이 아닙니다. 다음은 간단한 예제입니다 :

scala> i
warning: there were deprecation warnings; re-run with -deprecation for details
res28: Integer = 3

scala> i > 3
<console>:6: error: value > is not a member of Integer
       i > 3
         ^

int로 그 비교 :

scala> j
res30: Int = 3

scala> j > 3
res31: Boolean = false

정수와 지능 사이의 차이점은 무엇입니까? 나는 중단 경고가 표시하지만 그것이> 방법이없는 이유가있다 주어진,이되지 않는 이유를 나에게 불분명합니다.

해결법

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

    1."정수와 지능 사이의 차이점은 무엇입니까?"

    "정수와 지능 사이의 차이점은 무엇입니까?"

    정수 java.lang.Integer에 대한 단지의 별칭입니다. 지능은 추가 기능을 갖춘 스칼라 정수입니다.

    Predef.scala에서 보면이 별칭 볼 수 있습니다 :

     /** @deprecated use <code>java.lang.Integer</code> instead */
      @deprecated type Integer = java.lang.Integer
    

    당신은 당신이 정수를 취할 방법에 지능을 사용할 수 있다는 것을 의미, 그것을 필요로하는 경우에는, java.lang.Integer의에 지능에서 암시 적 변환이 있습니다.

    가되지 않는 이유에 관해서는, 난 단지 당신이 작업 한 종류의 정수의 어떤 이상 혼란을 피하기 위해이었다 추정 할 수 있습니다.

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

    2.정수 java.lang.Integer의 수입 만 자바와의 호환성을위한 것입니다됩니다. 이 자바 클래스이기 때문에, 물론 그것은 "<"라는 방법을 가질 수 없습니다. 편집 : 당신은 정수에서 int로 암시 적 변환을 선언하여이 문제를 완화 할 수 있습니다.

    정수 java.lang.Integer의 수입 만 자바와의 호환성을위한 것입니다됩니다. 이 자바 클래스이기 때문에, 물론 그것은 "<"라는 방법을 가질 수 없습니다. 편집 : 당신은 정수에서 int로 암시 적 변환을 선언하여이 문제를 완화 할 수 있습니다.

     implicit def toInt(in:Integer) = in.intValue()
    

    당신은 여전히 ​​비록 중단 경고를 얻을 수 있습니다.

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

    3.난 당신이 가지고있는 거 보는 문제가 값 유형의 개봉기 및 자바 클래스 정수의 사용 / 복싱을 할 수있다 생각합니다.

    난 당신이 가지고있는 거 보는 문제가 값 유형의 개봉기 및 자바 클래스 정수의 사용 / 복싱을 할 수있다 생각합니다.

    스칼라에서 권투 언 박싱 : 나는 대답이 여기라고 생각합니다. 스칼라에서 암시 언 박싱가 없습니다. 당신은 (3) 처리와 INT되고, 자바 클래스 정수로하지만 난> 3 전을 정의했습니다.

  4. ==============================

    4.정수, java.lang.Integer의 자바 클래스입니다. 이 클래스 아닌 자바의 기본 int 형에서 다릅니다. 자바 연산자 클래스를 정의 할 수 없기 때문에 그것은 정의 <가질 수 없습니다.

    정수, java.lang.Integer의 자바 클래스입니다. 이 클래스 아닌 자바의 기본 int 형에서 다릅니다. 자바 연산자 클래스를 정의 할 수 없기 때문에 그것은 정의 <가질 수 없습니다.

    지금, 당신은 전혀 이유는 ​​이러한 유형의 존재를 궁금해 수 있습니까? 당신은 예를 들어, 스칼라의 AnyRef에 해당 java.lang.Object 상위를 기대하는 방법에 int를 통과 할 수 있도록 음, 기본 형식은 참조로 전달 될 수 없습니다. 그렇게하려면, 당신은 정수 객체의 내부에 그 INT를 넣어, 다음 정수를 전달합니다.

  5. ==============================

    5.정수 java.lang.Integer의 수입 만 자바와의 호환성을위한 것입니다됩니다. 이 자바 클래스이기 때문에, 물론 그것은 "<"라는 방법을 가질 수 없습니다.

    정수 java.lang.Integer의 수입 만 자바와의 호환성을위한 것입니다됩니다. 이 자바 클래스이기 때문에, 물론 그것은 "<"라는 방법을 가질 수 없습니다.

    편집 : 당신은 정수에서 int로 암시 적 변환을 선언하여이 문제를 완화 할 수 있습니다.

  6. from https://stackoverflow.com/questions/1269170/what-is-the-differences-between-int-and-integer-in-scala by cc-by-sa and MIT license