[SCALA] 서열로서 문자열 [숯] 패턴 매칭
SCALA서열로서 문자열 [숯] 패턴 매칭
스칼라 이는 서열 [샤아]로 처리하여 문자열의 개별 문자에 기초하여 패턴을 공식화 할 수있다.
이 기능의 예는 스칼라의 투어에서 언급
이 예제 코드가 사용됩니다
object RegExpTest1 extends Application {
def containsScala(x: String): Boolean = {
val z: Seq[Char] = x
z match {
case Seq('s','c','a','l','a', rest @ _*) =>
println("rest is "+rest)
true
case Seq(_*) =>
false
}
}
}
나는이 함께이 문제는 조각의 세 번째 줄입니다 :
val z: Seq[Char] = x
왜 이런 종류의 필요 캐스팅? 해서는 안 (패턴 매칭을 포함 할 것) 모든 상황에서 서열 [숯불]와 같은 문자열 동작합니다? 그러나,이 변환없이 코드가 작동하지 않습니다.
해결법
-
==============================
1.100 %이 정확하지만 내 직감라고 확인하는 경우 그이 명시 적 캐스트없이 당신이하고자 원하는 것이 아니다 java.lang.String의,에 대한 패턴 일치는.
100 %이 정확하지만 내 직감라고 확인하는 경우 그이 명시 적 캐스트없이 당신이하고자 원하는 것이 아니다 java.lang.String의,에 대한 패턴 일치는.
명시 적 캐스트의 힘을 사용 Predef.stringWrapper 암시 적 변환에 스칼라 컴파일러; RichString 서열 [숯불]을 확장 같은 문자열이 문자의 순서 인 것처럼 따라서, 당신은 패턴 일치를 할 수 있습니다.
-
==============================
2.질문과 코멘트에 계속 용어의 진짜 남용이있다. 이 코드에는 캐스트가 없으며, 특히 현실에 근거가 없다 "그러니까 기본적으로, 이것은 어떤 종류의 건전성이 저하, 자바 상호 운용성에 큰 양보입니다."
질문과 코멘트에 계속 용어의 진짜 남용이있다. 이 코드에는 캐스트가 없으며, 특히 현실에 근거가 없다 "그러니까 기본적으로, 이것은 어떤 종류의 건전성이 저하, 자바 상호 운용성에 큰 양보입니다."
이 같은 스칼라 캐스트 외모 : x.asInstanceOf [Y]. 브로 Z : 당신은 아는 것이 과제이다 서열 [샤아] = X
서열 [샤아]에 문자열에서 암시 적 변환이 있기 때문에이 할당은 합법적이다. 나는이 캐스팅하지 않습니다, 다시 강조한다. 캐스트는 런타임에 실패 할 수 있습니다 임의의 주장이다. 암시 적 변환이 실패 할 수있는 방법은 없습니다.
암시 적 유형 간의 변환, 원래의 질문에 대한 답변에 따라 문제는, 원래 값이 수표를 입력하지 않을 경우 암시 적 변환은 일어날 것입니다. 이 문자열에 맞게 완벽하게 합법적이기 때문에, 변환이되지 않습니다, 경기는 실패합니다.
-
==============================
3.나는 andri가 말했다 에코 모든 것을거야. 상호 운용성을 위해, 스칼라 문자열 java.lang.Strings입니다. PREDEF에서, 서열 [숯] 구현 RichString에 열로부터 암시 적 변환이있다.
나는 andri가 말했다 에코 모든 것을거야. 상호 운용성을 위해, 스칼라 문자열 java.lang.Strings입니다. PREDEF에서, 서열 [숯] 구현 RichString에 열로부터 암시 적 변환이있다.
서열 [숯] 보유 중간 발 z의 필요없이, 패턴 매치를 부호화하는 아마도 더 좋은 방법 :
def containsScala(x: String): Boolean = { (x: Seq[Char]) match { ... } }
from https://stackoverflow.com/questions/740563/pattern-matching-a-string-as-seqchar by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스칼라 방법은 다른의 각 요소와 함께 반복자의 각 요소를 결합? (0) | 2019.11.23 |
---|---|
[SCALA] log4j에에서 스파크 로그에서 Logback에서 응용 프로그램 로그를 분리 (0) | 2019.11.23 |
[SCALA] 아파치 스파크 : java.lang.NoSuchMethodError .rddToPairRDDFunctions (0) | 2019.11.23 |
[SCALA] 왜 스칼라 보조 생성자는 다른 생성자에 단일 통화로 구성 할 수 있습니까? (0) | 2019.11.23 |
[SCALA] 추출기 (추출기를 사용할 것이라고 또는 다른 곳) case 문의 몸에있는 매개 변수를 사용자 정의 할 수 있습니까? (0) | 2019.11.23 |