Структура в NXC и 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 #.

Не могли бы вы помочь мне в этом деле?

Благодарю.

-3

Решение

Как люди говорили в комментариях, технически, ответ Array.zeroCreate (6*9)с последующим : colorType [] если компилятор не может вывести тип из контекста. Это создает 54 экземпляра структуры, последовательно помещенных в массив.

Тем не менее, вы должны знать, что:

  • Значение struct в CLI (и, следовательно, F #) очень отличается от его значения в C. Я не знаю NXC, но вы должны проверить MSDN на структурах чтобы убедиться, что это то, что вы хотите. В F # struct означает тип ценности, что обычно является оптимизацией производительности, но также изменяет семантику.

  • В F # значения являются неизменяемыми по умолчанию, и colorType не имеет конструктора, поэтому все значения будут обнуляться, и вы не сможете ничего с ним сделать, пока не добавите конструктор. Вместо этого, изменчивость полей может вызвать головную боль, если тип остается структурой из-за вышеупомянутых изменений в семантике. Я бы не рекомендовал это.

  • Хотя начинание с обнуляемого изменяемого массива является типичным во многих языках программирования, в F # это лишь редко используемый инструмент повышения производительности. Обычно, сначала нужно начать с неизменный список с актуальными данными или же другие виды последовательностей и выполнять сопоставления исходных данных с новыми объектами, содержащими желаемый результат.

Я бы порекомендовал сначала сделать несколько уроков или читать по F # и привыкнуть к типичным инструментам языка. Такие темы, как структуры, явные поля (val) и императивные инструменты F #, могут быть не лучшей отправной точкой.

Есть много интернет-ресурсов для изучения F #, например tryfsharp.org, который даже имеет компилятор для примеров, если ваш браузер совместим.

5

Другие решения


По вопросам рекламы [email protected]