在F#中将字面值转换为字节

Ram*_*amy 0 f# casting

这是我的代码片段:

let targetMeasure (usesPercent:Nullable<byte>) value =
            match usesPercent.Value with
            | 0 -> sprintf "$%A" value
            | _ -> sprintf "%A%%" value
Run Code Online (Sandbox Code Playgroud)

尝试将"usesPercent"与0匹配,但0必须是一个字节.这总是让我在F#中感到困惑.我超越了可以为空的东西,但那时的值不是同一类型.我该如何解决这个问题?

Tom*_*cek 6

您可以通过编写创建字节文字0uy.如果你写一些无效的(例如0z),F#Interactive会打印一个(漂亮的)完整的数字文字列表.然后你得到:

样本格式包括4,0x4,0b0100,4L,4UL,4u,4s,4us,4y,4uy,4.0,4.0f,4I.

对于整数,这是很容易解码u代表无符号和y,s(无),L分别代表8位,16位,32位和64位.