2014-04-07 17 views
6

Jaki jest najlepszy sposób, aby to zrobić:Ograniczanie opcji w scala?

def reduce[A](x: Option[A], y: Option[A])(f: (A, A) => A): Option[A] = 
    (x, y) match { 
    case (Some(a), Some(b)) => Some(f(a, b)) 
    case (None, None) => None 
    case (_, None) => x 
    case (None, _) => y 
    } 

Spojrzałem na this pytanie, ale jego przypadek jest nieco inny od mojego ...

Odpowiedz

14

Najkrótsza jest prawdopodobnie

(x ++ y).reduceLeftOption(f) 

który działa z powodu niejawnej konwersji z Option na Iterable, która ma metodę, która wykonuje dokładnie to, czego potrzebujesz.