說我們得到了一個非常簡單的功能的ToString引發的NullReferenceException爲單位值()
let fn a = a.ToString()
它的類型被推斷爲a -> string
然而,一個單位值傳遞給在一個NullReferenceException作用的結果。
在像上面簡單的功能的情況下,這可能是周圍容易的工作,但我在一個更復雜的情況其實是:
let eitherToHttp e =
match e with
| Either.Ok v -> OK (v.ToString())
| Either.Bad reason -> reasonToErrorCode reason
的類型,這是Either<'a, RejectReason> -> WebPart
(什麼WebPart
和Either
實際上是在這裏是不相關的)
在e
的類型爲Either<unit, RejectReason>
的情況下,該函數與簡單場景中的完全相同。
我該如何克服這個問題? 如果實際上這不適用於所有類型,那麼應該將類型推斷爲泛型?
單元在運行時由'null'常量表示,所以自然不能調用它的方法。 –