C++ NXC和F中的结构#
我有一个问题: NXC中有这样一个结构函数:C++ NXC和F中的结构#,c++,c,struct,f#,nxc,C++,C,Struct,F#,Nxc,我有一个问题: NXC中有这样一个结构函数: 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#中创建了相同的结构,
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
但是我不知道如何调用colorType cubeColor[6*9]强>在F#中
你能帮我处理这个案子吗
谢谢。正如人们在评论中所说,从技术上讲,答案是
Array.zeroCreate(6*9)
,如果编译器无法从上下文推断类型,可以选择后跟:colorType[]
。这将创建54个结构实例,按顺序放置到一个数组中
但是,您应该知道:
- CLI中的
的含义(因此F#)与C中的含义非常不同。我不知道NXC,但您应该检查以确保这是您想要的。在F#中,struct
表示一种值类型,这通常是一种性能优化,但也会改变语义struct
- 在F#中,默认情况下值是不可变的,
没有构造函数,因此所有值都将保持为零,并且在添加构造函数之前,您将无法使用它执行任何有用的操作。如果类型仍然是一个结构,那么让字段变为可变可能会让您头疼,因为前面提到的语义变化。我不建议这样做colorType
- 虽然在许多编程语言中,从零开始的可变数组是典型的,但它在F#中只是一个很少使用的性能工具。通常情况下,首先从或开始,并将原始数据映射到包含所需结果的新对象
例如,有许多在线资源可用于学习F#,如果浏览器兼容,这些资源甚至为示例提供了一个编译器。您想创建一个结构的零数组吗?事实上,我正在尝试再次用F#编写NXC代码。但我无法理解NXC中结构的意义。在编写colorType cubeColor[6*9]时,调用结构中的哪些值。@yeniden-这只是一个结构的归零数组,正如Daniel所说的那样。我现在能做什么?你有什么想法吗?你是说喜欢?