只要我們有一個PartialFunction[X,R]
,就可以很容易地將它轉換爲返回Option[R]
的函數。如何將X =>選項[R]轉換爲部分函數[X,R]
def pfToOptf[X, R](f: PartialFunction[X,R])(x: X) =
if (f.isDefinedAt(x)) Some(f(x))
else None
但是,如果有什麼任務是相反的:假設我有一個函數f
越來越X
作爲參數和返回Option[R]
結果。而且我想製作一個PartialFunction[X,R]
。什麼是最好的方法?
我想出看起來很醜陋,我的口味:
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 }
}
有沒有一些更好的辦法,我錯過了什麼?
的[PartialFunction的瘦臉方法的逆]可能重複(http://stackoverflow.com/questions/5902266/inverse-of-partialfunctions-lift-method) – 2014-12-28 07:18:56
@ToddOwen我只是好奇什麼是「前」是指你在句子「這個問題之前已經被問過」。請簡單比較兩個問題的日期。 – 2014-12-29 18:29:16
收起投票。對不起,這不是「之前」的問題,而是另一個問題似乎收到了更好的答案(28票)。但是現在我注意到,Thayne在這裏給出了相同的答案。 – 2014-12-30 14:32:10