2013-10-08 4 views
1

미리 정의 된 변수 유형에 따라 if 조건을 처리하고 모든 유형을 나중에 처리하려고합니다. 유형이 String, Int, double, List 또는 Type으로 업데이트되었습니다. 지도스칼라 변수의 유형에 기반한 조건

if (type(x)==int){.....} 
else if (type(x)==Map){....} 

에 변수의 유형을 얻기 위해 또는 내가 어떻게 conditions.I는 방법 중 하나를 알고 있다면 그것을에서 사용하는 변수 의 종류를 얻을 수있는 기능이 있는가 사용하는 것입니다

x.getClass.getSimpleName 

하지만, x의 유형은 내가 그래서 내가

if (x.getClass.getSimpleName==Map){....} 

이후의 경우 상태에서 사용하지 못할 1과 2는 여기에 의미 확실하지 오전 다른지도에 대한 MAP1 또는 Map2에를 인쇄지도 경우 것입니다 내가 MAP1 또는 Map2에 우리는 매칭이 패턴을 호출

+2

'일치'키워드를 살펴보십시오. 과부하 스위치 명세서와 같습니다. – Shadowlands

답변

7

올 것이다 잘 모릅니다으로 거짓과 가장 멋진 스칼라 부분 중 하나입니다 :

def foo(x: Any) = x match { 
    case m: Map[_,_] => println("I'm a map!") 
    case d: Double => println("I'm a double") 
    case i: Int  => println("I'm an int") 
    case xs: List[_] => println("I'm a list") 
} 

밑줄은 을 나타냅니다. 어느 것이 든 상관 없습니다.

+0

+1 패턴 일치 가야합니다. – maasg

+0

스칼라 입문서 (The Neophyte 's Guide to Scala)는 스카라 (Scala)를 소개하는 멋진 블로거 시리즈입니다 : http://danielwestheide.com/blog/2012/11/21/the-neophytes-guide-to-scala-part- 1-extractors.html –

관련 문제