use*_*285 0 error-handling enums f# hashcode bitmask
我有一个带掩码的错误代码的枚举,带有字符串表示和二进制int表示:
type ErrorCodes =
| NoError = 0
| InvalidInputError = 1
| AuthenticationFailedError = 2
| InvalidArgumentError = 4
| ItemNotFoundError = 8
| UnknownError = 16
Run Code Online (Sandbox Code Playgroud)
当我浏览程序时,我使用按位OR运算符(|||)收集所有错误.所以现在我有一些看起来像01100的东西.如何打印到控制台:"InvalidArgumentError"和"ItemNotFoundError?"
我只想使用:
for i = 0 to 32 do
if ((err.GetHashCode() % 2) = 1) then
Console.WriteLine("ErrorCode: {0}",err.GetHashCode())
Run Code Online (Sandbox Code Playgroud)
但现在我仍然坚持如何打印实际的字符串
如果ErrorCodes
使用System.Flags
属性修饰类型,.ToString
则将格式化为值名称列表.
[<System.Flags>]
type ErrorCodes = ...
let errors = ErrorCodes.InvalidInputError ||| ErrorCodes.UnknownError
printfn "%O" errors
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
71 次 |
最近记录: |