2013-11-22 2 views
0

나는 다음과 같은 것을 달성하기 위해 싶습니다스칼라 : 패턴 일치 여러 옵션 인수

private def msgPrefix(implicit myClass: MyClass, anotherClass: AnotherClass) = {   
    Option(myClass, anotherClass) match { 
     case Some(validMyClass, validAnotherClass) => validMyClass.process + validAnotherClass.process 
     case _  => "" 
    } 
    } 

이 작업을 수행하는 올바른 방법은 무엇입니까? 두 인수 중 하나가 null의 경우

private def msgPrefix(implicit myClass: MyClass, anotherClass: AnotherClass) = {   
    (Option(myClass), Option(anotherClass)) match { 
    case (Some(validMyClass), Some(validAnotherClass)) => validMyClass.process + validAnotherClass.process 
    case _ => "" 
    } 
} 

이 빈 문자열을 반환합니다, 즉 :

답변

3

은 내가 당신이 찾고 있지만하는지 이해 확실하지 않다

scala> msgPrefix(MyClass("foo"),null) 
res2: String = "" 

scala> msgPrefix(MyClass("foo"),AnotherClass("bar")) 
res3: String = foobar 

하지만 인수 유형을 Option[MyClass]Option[AnotherClass] (가능한 경우)으로 변경해야합니다.

2

귀하의 주장은 아마 Option[MyClass]Option[AnotherClass]이어야합니다. 그러나 원래의 질문에 답하기 위해 패턴 매칭보다는 이해를 위해 다음을 사용할 수 있습니다.

+0

나는이 솔루션을 정말 좋아하지만 @Marth 대답을 받아 들였습니다. – Prasanna