假设我们有一个非常简单的函数
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>
该函数的抛出与简单场景中完全相同。
我怎样才能以一种好的方式克服这个问题? 如果实际上这不适用于所有类型,是否应该将类型推断为通用类型?
最佳答案
使用内置的string
函数而不是在对象上调用ToString
:
> string 42;;
val it : string = "42"
> string ();;
val it : string = ""
关于generics - ToString 为单位值抛出 NullReferenceException (),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41347374/