Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ NXC和F中的结构#_C++_C_Struct_F#_Nxc - Fatal编程技术网

C++ NXC和F中的结构#

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#中创建了相同的结构,

我有一个问题:

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#中创建了相同的结构,如下所示:

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中的
    struct
    的含义(因此F#)与C中的含义非常不同。我不知道NXC,但您应该检查以确保这是您想要的。在F#中,
    struct
    表示一种值类型,这通常是一种性能优化,但也会改变语义

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

  • 虽然在许多编程语言中,从零开始的可变数组是典型的,但它在F#中只是一个很少使用的性能工具。通常情况下,首先从或开始,并将原始数据映射到包含所需结果的新对象

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


例如,有许多在线资源可用于学习F#,如果浏览器兼容,这些资源甚至为示例提供了一个编译器。

您想创建一个结构的零数组吗?事实上,我正在尝试再次用F#编写NXC代码。但我无法理解NXC中结构的意义。在编写colorType cubeColor[6*9]时,调用结构中的哪些值。@yeniden-这只是一个结构的归零数组,正如Daniel所说的那样。我现在能做什么?你有什么想法吗?你是说喜欢?