2012-08-25 2 views
3

현재 행동 :스칼라 IDE 디버거 "로 단계"

  • case Twice(n) ... 줄에 중단 점을 넣습니다. 제어 "단계로"온
  • 컨트롤이 제어 라인 if (z % 2 == 0)... 간다 "단계로"더 한층 def TwiceTest = { 라인
  • 간다 "단계로"x match { 라인에
  • 간다.

예상되는 동작 :

  • case Twice(n) ... 줄에 중단 점을 넣습니다.
  • "step into"에서 제어는 if (z % 2 == 0)... 행으로 이동합니다. 중첩 된 추출기의 많은 스칼라 프로그램을 디버깅하는 동안

코드 조각

object testobj extends App { 
    def TwiceTest = { 
    val x = Twice(21) 
    x match { 
     case Twice(n) => Console.println(n) 
    } // prints 21 
    } 

    TwiceTest 

} 

object Twice { 
    def apply(x: Int): Int = x * 2 
    def unapply(z: Int): Option[Int] = { 
    if (z % 2 == 0) Some(z/2) else None 
    } 
} 

현재의 행동은 자극한다. 새로운 스칼라 디버거와 자바 디버거를 사용해 보았지만 같은 결과를 얻었습니다.

Step Filtering도이 경우 도움이되지 않습니다.

해결 방법으로는 unapply 메서드에 중단 점을 넣고 첫 번째 중단 점에서 을 실행하고 있습니다. 누군가 제발 좀 더 깨끗한 방법을 제안 해 줄 수 있어요.

편집 내가 스칼라-IDE (최신 야간 빌드 2.1.0.nightly-2_09-201208250315-529cd70.)

이클립스 버전 사용하고 1 : 인디고 서비스 릴리스 2 빌드 ID : 20120216-1857

OS : Windows 7 (64 비트)

+2

사용중인 IDE는 무엇입니까? –

+0

@ om-nom-nom Scala IDE 플러그인으로 Eclipse Indigo를 사용하고 있습니다 – dips

+2

[scala-ide-user] (https://groups.google.com/forum/?fromgroups#!forum/)에 게시하시는 것이 좋습니다. scala-ide-user) – sschaef

답변

0

바이트 코드의 행 번호 정보가 잘못되었습니다. IDE에서는 문제가되지 않지만 Scala 컴파일러에서는 문제가되지 않습니다. 패턴 일치가 컴파일 될 때 합성 코드가 잘못된 위치 정보를 가져 오는 경우가 있습니다.

사용자가 스칼라 2.9.2를 사용하고 있다고 가정합니다. 다음 버전의 스칼라 (2.10.0)에서는 패턴 일치 도구가 크게 향상되었으므로 한 번 사용해 보는 것이 좋습니다.

관련 문제