대안 (문자열)에 대한 패턴 매칭을 사용할 때 스칼라는 대문자 (다음 예제에서는 MyValue1
및 MyValue2
)로 시작하는 변수를 허용하지만 소문자로 시작하는 변수는 허용하지 않습니다. myValue1
, myValue2
). 이것은 Scala의 버그 또는 기능입니까? 나는 버전 2.8에서 이것을 얻는다. 이것이 기능이라면 누구나 그 이유에 대해 설명 할 수 있습니까?스칼라 패턴이 소문자 변수 이름과 일치 함
그래서 그것은 참으로 기능이 아니라 버그가 ... : 실행에
val myValue1 = "hello"
val myValue2 = "world"
val MyValue1 = "hello"
val MyValue2 = "world"
var x:String = "test"
x match {
case MyValue1 | MyValue2 => println ("first match")
case myValue1 | myValue2 => println ("second match")
}
, 나는 다음과 같은 얻을 :
scala> val myValue1 = "hello"
myValue1: java.lang.String = hello
scala> val myValue2 = "world"
myValue2: java.lang.String = world
scala> val MyValue1 = "hello"
MyValue1: java.lang.String = hello
scala> val MyValue2 = "world"
MyValue2: java.lang.String = world
scala> var x:String = "test"
x: String = test
scala> x match {
| case MyValue1 | MyValue2 => println ("first match")
| case myValue1 | myValue2 => println ("second match")
| }
<console>:11: error: illegal variable in pattern alternative
case myValue1 | myValue2 => println ("second match")
^
<console>:11: error: illegal variable in pattern alternative
case myValue1 | myValue2 => println ("second match")
^
편집이 내가 사용하는 코드입니다 이것이 유용 할 때 누구나 예제를 제공 할 수 있습니까?
내가 사용하는 경우 :
x match {
case myValue1 => println ("match")
case _ =>
}
나는 첫 번째가 항상 일치하는 것을 의미, 지난 경우 상
unreachable code
경고를 얻을.
@이 스칼라에서 일반적인 프로그래밍 실수 중 하나입니다 http://stackoverflow.com/questions/1332574/common- 프로그래밍 실수 - 스칼라 개발자 - 투 - 피/2489355 # 2489355. 전체 스레드를 읽는 것이 좋습니다.이 스레드는 다른 스레드와 비슷합니다. – Steve
좋은 참고를 보내 주셔서 감사합니다. – Jus12
유용한 예 :'x match {case myValue1 : String => println ("match :"+ myValue1); case _ =>}'-> myValue1은 지역 변수가됩니다. – Madoc