gpt4 book ai didi

c++ - NXC 和 F# 中的结构

转载 作者:行者123 更新时间:2023-11-30 20:47:17 24 4
gpt4 key购买 nike

我有一个问题:

NXC中有这样一个struct函数:

struct colorType
{
int colorval;
unsigned int rawRed;
unsigned int rawGreen;
unsigned int rawBlue;
unsigned int normRed;
unsigned int normGreen;
unsigned int normBlue;
};

colorType cubeColor[6*9];

我在 F# 中创建了相同的结构,如下所示:

type colorType =
struct
val colorval: int
val rawRed: uint16
val rawGreen: uint16
val rawBlue: uint16
val normRed: uint16
val normGreen: uint16
val normBlue: uint16
end

但我不知道如何在 F# 中调用 colorTypecubeColor[6*9];

你能帮我处理这个案子吗?

谢谢。

最佳答案

正如人们在评论中所说,技术上,答案是 Array.zeroCreate (6*9),可选地后跟 : colorType [] 如果编译器无法从上下文推断类型。 这将创建该结构的 54 个实例,并按顺序放入数组中。

但是,您应该注意:

  • CLI(以及 F#)中 struct 的含义与其在 C 中的含义非常不同。我不知道 NXC,但您应该检查 the MSDN on structs以确保这就是您想要的。在 F# 中,struct 表示值类型,这通常是一种性能优化,但也会改变语义。

  • 在 F# 中,默认情况下值是不可变的,并且 colorType 没有构造函数,因此所有值都将保持为零,并且在添加之前您将无法对其执行任何有用的操作一个构造函数。 如果类型仍然是结构体,那么由于前面提到的语义变化,使字段可变可能会让您头疼。我不建议这样做。

  • 虽然从归零的可变数组开始在许多编程语言中都很常见,但它只是 F# 中很少使用的性能工具。通常,首先会从 an immutable list with actual data 开始。或other kinds of sequences并将原始数据映射到包含所需结果的新对象。

我建议首先学习一些关于 F# 的教程或阅读,并习惯该语言的典型工具。结构、显式字段 (val) 和 F# 的命令式工具等主题可能不是最好的起点。

学习F#的在线资源有很多,例如tryfsharp.org ,如果您的浏览器兼容,它甚至还具有示例编译器。

关于c++ - NXC 和 F# 中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27411529/

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