2017-10-23 7 views
0

일치하는 문자열 패턴은 없음 그렇지 않으면이 (가) Test("Found")스칼라 : 패턴이 <code>"de" or None</code> 경우 코드 아래

val s =Option("abc") 
val t = s.map(_.take(2)) 
case class Test(id:String) 

t match { 
    case Some("de") => None 
    case None => None 
    case _ => Test("Found") 
} 

사람이 경우가

일치를위한 효율적인 솔루션을 제안 할 수 반환 반환 문자열의 처음 두 문자를 받아 확인

val condition = Option("abc").exists(_.toLower.take(2) == "de") 
val output: Any = if(condition) Test("found") else None 

첫 번째 부분은 01 경우 false를 반환

+0

무엇이 질문입니까? –

+0

수정 된 질문하시기 바랍니다. – coder25

답변

1

귀하의 댓글의 마지막 줄에 Some(Test("Found"))을 입력 하셨다고 가정합니다. 귀하의 댓글에서 다른 답변으로 판단하십시오. 만약 그렇다면, 이것은 당신이 찾고있는 것입니다 :

t.filterNot(_.take(2) == "de").map(_ => Test("Found")) 
2

이 나는 ​​날이 시도 할 수 있도록 요구하고 무엇을 얻을 생각은 None입니다. 또한 문자열의 처음 두 문자가 대소 문자를 구분하지 않고 "de" 인 경우 false을 반환합니다.

두 번째 부분은 None 또는 Test 개체를 반환합니다. 그러나이 결과는 Any입니다. 대신 Option[Test] 유형을 반환하겠습니까?

+0

예 반환 유형은''''''''''''''''''''' – coder25