2
나는 그것이 기대하는 것과는 다른 일을하고 있기 때문에 이해력의 작동 방법을 추론하려고합니다. 나는 몇 가지 대답을 읽었는데, 가장 관련성이 높은 것은이 하나이다 Scala "<-" for comprehension 그러나 나는 여전히 당황 스럽다.스칼라 정규식과 이해를 위해
다음 코드 은 예상대로 작동합니다..
file.getLines().foreach { line =>
val whidSession: String = rWhidSession.findAllMatchIn(line) flatMap {m => m.group(1)} mkString ""
val whidArg: String = rWhidArg.findAllMatchIn(line) flatMap {m => m.group(1)} mkString ""
if(whidSession != whidArg) println(line)
}
다음이있다 : 두 개의 다른 정규 표현식에 일치 값이 동일하지 않은 라인 (얻기 인수의 값에 대한 세션 쿠키의 값과 다른 하나의 단지 컨텍스트를 제공하기 위해)를 인쇄
/**
* This would compare letters, regardless of the use of mkString.. even without the flatMap step.
*/
val whidTuples = for {
line <- file.getLines().toList
whidSession <- rWhidSession.findAllMatchIn(line) flatMap {m => m.group(1) mkString ""}
whidArg <- rWhidEOL.findAllMatchIn(line) flatMap {m => m.group(1) mkString ""} if whidArg != whidSession
} yield line
두 번째 버전이 첫 번째 버전과 차이가 있는지 (한눈에 한 눈에) :'whidSession <- ...'행에서'mkString ""부분은 다음과 같습니다. 첫 번째 경우와 마찬가지로 외부 대신 {} 안에 있습니다. 곤충? –
첫 번째 스 니펫에서는 'rWhidArg' 정규 표현식을 사용하지만 두 번째'rWhidEOL' 표현식을 사용합니다. 어쩌면 두 번째 정규식이 모든 기호에서 일치 할 수 있습니까? –