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

时间:2011-01-31 16:22:57

标签: f# casting

这是我的代码片段:

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

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

2 个答案:

答案 0 :(得分:6)

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

  

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

对于整数,解码非常简单u代表无符号和ys,(无),L代表8位,16位,32位和分别为64位。

答案 1 :(得分:3)

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