gpt4 book ai didi

.net - F# 可以强制参数为 byte[8] 吗?

转载 作者:行者123 更新时间:2023-12-01 08:39:27 25 4
gpt4 key购买 nike

我需要一个从 8 字节数组生成校验和的小实用函数。

现在,这本身很简单,除了我不能在 C# 中使用 byte Checksum(byte[8] input) 作为方法声明 - 我不能指定数组的大小,所以我必须使用可以是任意大小的 byte[],然后在方法主体中我需要检查输入是否为空且长度 == 8。

我只是想知道 F# 是否可以做到这一点?我听说 F# 有更多选项可以将可接受的参数限制为函数(例如,可区分联合)?

当然,在这个简单的例子中,F# 会有点过头了,但我很好奇。

最佳答案

假设您不希望调用者单独传递它们,则 byte[] arg 可以在 IMO 中使用;我要做的唯一改变是我也会考虑传入一个起始偏移量(因为我经常发现自己远离 byte[] 的开头 - 但这取决于你的上下文) .

如果您真的想避免这种丑陋,您可以考虑将其视为 long (或者可以说更好(因为负数右移)用于位工作:ulong)。您总是知道它的长度正好是 8 个字节,并且它避免了启动时的几次查找。

您可以通过 byte*ulong*

的移位或不安全强制转换在两种格式之间切换

关于.net - F# 可以强制参数为 byte[8] 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5775149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com