Finché abbiamo un PartialFunction[X,R]
è molto facile convertirlo in una funzione che restituisce Option[R]
, ad es.Come convertire X => Opzione [R] in PartialFunction [X, R]
def pfToOptf[X, R](f: PartialFunction[X,R])(x: X) =
if (f.isDefinedAt(x)) Some(f(x))
else None
Tuttavia, che cosa se il compito è opposto: supponiamo di avere una funzione f
ottenere X
come argomento e tornare Option[R]
di conseguenza. E voglio fare un PartialFunction[X,R]
fuori di esso. Qual è il modo migliore?
Quello che è venuta in mente sembra piuttosto brutta per i miei gusti:
def optfToPf[X,R](f: X => Option[R]) : PartialFunction[X,R] = {
object extractor {
def unapply(x: X): Option[R] = f(x)
}
{ case extractor(r) => r }
}
C'è qualche modo migliore che ho perso?
possibile duplicato di [Inversa di metodo di sollevamento di funzione parziale] (http://stackoverflow.com/questions/5902266/inverse-of-partialfunctions-lift-method) –
@ToddOwen Sono solo curioso quanto "prima" significa tu nella frase "questa domanda è stata fatta prima". Si prega di confrontare semplicemente le date di entrambe le domande. –
Chiudi voto ritirato. Scusate, non era una questione di "prima", ma piuttosto il fatto che l'altra domanda sembrava aver ricevuto una risposta migliore (con 28 voti). Ma ora noto che Thayne ha dato la stessa risposta qui. –