yen*_*den -3 c c++ f# struct 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];
Run Code Online (Sandbox Code Playgroud)
我在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
Run Code Online (Sandbox Code Playgroud)
但我不知道如何调用colorType cubeColor [6*9]; 在F#中.
你可以帮我解决这个案子吗?
谢谢.
正如人们在评论中所说的那样,从技术上讲,答案是Array.zeroCreate (6*9),: colorType []如果编译器无法从上下文推断出类型,则可选择.这将创建54个结构实例,按顺序放入数组中.
但是,您应该知道:
structCLI中的含义(以及F#)与它在C中的含义非常不同.我不知道NXC,但你应该检查结构上的MSDN以确保这是你想要的.在F#中,struct表示值类型,通常是性能优化,但也会改变语义.
在F#中,默认情况下值是不可变的,并且colorType没有构造函数,因此所有值都将保持为零,并且在添加构造函数之前,您将无法对其执行任何有用的操作.如果类型仍然是结构,那么使字段变为可变会导致令人头疼,因为上述语义的变化.我不建议这样做.
虽然从零开始,可变数组在许多编程语言中都是典型的,但它只是F#中使用稀疏的性能工具.通常,首先从具有实际数据或其他类型序列的不可变列表开始,并从原始数据到保持所需结果的新对象进行映射.
我建议先做一些教程或阅读F#,并习惯语言的典型工具.结构,显式字段(val)和F#的命令式工具等主题可能不是最好的起点.
有许多用于学习F#的在线资源,例如tryfsharp.org,如果您的浏览器兼容,它甚至还为样本提供了编译器.