복붙노트

[SCALA] 스칼라 2.8 및 스칼라 2.7 사이의 가장 큰 차이점은 무엇입니까?

SCALA

스칼라 2.8 및 스칼라 2.7 사이의 가장 큰 차이점은 무엇입니까?

나는 스칼라 2.7.5에 오히려 큰 프로그램을 작성했습니다, 지금은 버전 2.8으로 기대하고 있습니다. 하지만 스칼라의 발전이 큰 도약이 나에게 어떤 영향을 미치는지에 대해 궁금 해요.

스칼라의 두 버전 사이의 가장 큰 차이점은 무엇을 할 것인가? 그리고 아마도 가장 중요한 :

해결법

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

    1.당신은 여기에 (6 월 2009) 최근이 문서 완료 Scala2.8 (2009 년 4 월)의 새로운 기능의 미리보기를 찾을 수 있습니다

    당신은 여기에 (6 월 2009) 최근이 문서 완료 Scala2.8 (2009 년 4 월)의 새로운 기능의 미리보기를 찾을 수 있습니다

    "다시 쓰기 코드는"(개선 된 컬렉션의 일부를 사용한 것을 제외) 의무는 아니지만 계속 같은 일부 기능 (위키 백과 : 제어 상태의 추상적 인 표현, 또는 코드의 "계산의 나머지"또는 "나머지는 실행되는 ")는 당신에게 새로운 아이디어를 제공 할 수 있습니다. 좋은 소개 (이 스레드에서 훨씬 더 상세하고 구체적인 답변을 올렸습니다) 다니엘에 의해 작성, 여기 발견된다.

    참고 : 넷빈즈에 스칼라 (2.7.x의 공식 페이지 대) 일부 2.8 야간 빌드로 작동하는 것 같다

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

    2.마이그레이션 할 때, 컴파일러는 어떤 안전망을 제공 할 수 있습니다.

    마이그레이션 할 때, 컴파일러는 어떤 안전망을 제공 할 수 있습니다.

    예 @specialized과 Continuations를 위해 당신이 이주를 시작으로 무시해도 될 수있는 다른 많은 새로운 기능이 있습니다.

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

    3.심지어하려고하지 않도록 VonC의 대답은,에 개선하기 어렵다. 나는 그를 언급하지 다른 물건을 다룰 것이다.

    심지어하려고하지 않도록 VonC의 대답은,에 개선하기 어렵다. 나는 그를 언급하지 다른 물건을 다룰 것이다.

    첫째, 일부 사용되지 않는 물건 이동합니다. 코드에서 중단 경고가있는 경우, 그것은 더 이상 컴파일되지 않습니다 가능성이 높습니다.

    다음으로, 스칼라의 라이브러리는 확대되고있다. 대부분 이러한 중 하나 또는 옵션에 예외를 잡기는 null와 함께 옵션 내로 AnyRef 변환과 같은 일반적인 작은 패턴이 없음에 매핑. 이런 일들은 주로 주목 전달할 수 있습니다,하지만 난 블로그에 뭔가를 게시하고 나중에 누군가가 스칼라 2.8에 이미 말해 갖는 피곤 해요. 음, 사실, 나는 그것의 피곤 아니지만, 오히려 행복하게, 그것에 익숙해. 그리고 주요 개정을 받고 컬렉션, 여기에 대해 이야기하고 있지 않다.

    사람들이 답변 등의 라이브러리 개선의 실제 사례를 게시하는 경우 지금, 그것은 좋은 것입니다. 나는 행복하게 이러한 모든 답변을 upvote에 것입니다.

    REPL은 명령 완료를 받고 있지 않습니다. 그것은 개체에 대한 AST를 검사 할 수있는 능력, 또는 REPL에 해당 코드에 삽입 브레이크 포인트 기능을 포함하여, 물건을 많이 얻고있다.

    코드에 대한 스칼라 컴파일러 자체를 쿼리하여 - 또한, 스칼라의 컴파일러는 우리가 스칼라에 대해 훨씬 더 "지식이"이 될 것으로 예상 할 수있는 수단, 십오 일에 빠른 부분 컴파일을 제공 할 수 있도록 수정되고있다.

    하나의 큰 변화는 모두 도서관 작가와 사용자에 대한 문제를 감소하지만, 많은 주목 통과 할 가능성이있다. 지금, 당신은 다음을 작성하는 경우 :

    package com.mystuff.java.wrappers
    
    import java.net._
    

    당신은하지 자바의 순 라이브러리를 가져하지만, COM, com.mystuff, com.mystuff.java 및 com.mystuff.java.wrappers 등 com.mystuff.java의 순 라이브러리는 모든 범위 내에서 얻고, 자바는 COM 내부에서 찾을 수 있습니다. 내 물건. 스칼라 2.8으로 만 래퍼 범위가됩니다. 때때로, 당신이 범위에있을 나머지의 일부를 원하기 때문에, 다른 패키지 구문은 현재 허용된다 :

    package com.mystuff.factories
    package ligthbulbs
    

    이는 동일하다 :

    package com.mystuff.factories {
      package lightbulbs {
        ...
      }
    }
    

    그리고 범위에 모두 공장과 전구를 얻기 위해 발생합니다.

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

    4.

    def takesArray(arr: Array[AnyRef]) {…}
    
    def usesVarArgs(obs: AnyRef*) {
        takesArray(obs)
    }
    

    될 필요가있다

    def usesVarArgs(obs: AnyRef*) {
        takesArray(obs.toArray)
    }
    

    그 하나에 대한 IRC 채널을 방문했지만, 나는 여기에 시작한다 깨달았다.

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

    5.여기에 2.2 이후 스칼라를 사용하고있다 에릭 윌리 거가에서 체크리스트입니다. 이 물건의 일부는 최근 사용자 일자 것 같다 것입니다.

    여기에 2.2 이후 스칼라를 사용하고있다 에릭 윌리 거가에서 체크리스트입니다. 이 물건의 일부는 최근 사용자 일자 것 같다 것입니다.

    package a
    class B
    
    package a.c
    class D extends B
    
    package a.c
    import a.B
    class D extends B
    
    package a
    package c
    class D extends B
    
    package a.b
    object O { val x = 1 }
    
    package a.b.c
    import b.O.x
    
    package a.b.c
    import a.b.O.x
    
    list.map[Int](f)
    
    list.map[Int, List[Int]](f)
    
    map.transform[Value](g)
    
    map.transform[Value, Map[Key, Value]](g)
    
     [scalac]  found   : (String) => Ordered[String]
     [scalac]  required: Ordering[String]
     [scalac]         TreeMap[String, Any](map.toList: _*)(stringToCaseInsensitiveOrdered _)
    
    list.filter(that.f _)
    
    list.filter(that f _)
    
    list.filter(that.f(_))
    

    > > >

    trait T {
      val v
      val w = v + v
    }
    
    class C extends T {
      val v = "v"
    }
    
    class C extends {
      val v = "v"
    } with T
    
  6. from https://stackoverflow.com/questions/1243794/what-are-the-biggest-differences-between-scala-2-8-and-scala-2-7 by cc-by-sa and MIT license