다음 기능을 사용하십시오.
def fMatch(s: String) = {
s match {
case "a" => println("It was a")
case _ => println("It was something else")
}
}
이 패턴은 잘 어울립니다.
scala> fMatch("a")
It was a
scala> fMatch("b")
It was something else
내가 할 수있는 것은 다음과 같습니다.
def mMatch(s: String) = {
val target: String = "a"
s match {
case target => println("It was" + target)
case _ => println("It was something else")
}
}
이로 인해 다음 오류가 발생합니다.
fMatch: (s: String)Unit
<console>:12: error: unreachable code
case _ => println("It was something else")
타겟이 실제로 입력이 무엇이든 할당하고 싶은 이름이라고 생각하기 때문이라고 생각합니다. 두 가지 질문 :
왜 이런 행동입니까? 적절한 유형을 가진 범위에서 기존 변수를 찾아서 먼저 사용하고 아무것도 발견되지 않으면 대상을 패턴 일치 이름으로 취급 할 수 없습니까?
이에 대한 해결 방법이 있습니까? 변수에 대한 패턴 일치 방법이 있습니까? 궁극적으로 큰 if 문을 사용할 수 있지만 대소 문자 구분이 더 우아합니다.
관련 : stackoverflow.com/questions/7083502/...
—
데이브 L.
이 질문, 코드 및 답변은 Scala 2.12.x에서 구식이라고 생각합니다. 적용되는 버전이 질문의 일부로 언급되면 좋을 것입니다.
—
코니