У меня вопрос:
В 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 экземпляра структуры, последовательно помещенных в массив.
Тем не менее, вы должны знать, что:
Значение struct
в CLI (и, следовательно, F #) очень отличается от его значения в C. Я не знаю NXC, но вы должны проверить MSDN на структурах чтобы убедиться, что это то, что вы хотите. В F # struct
означает тип ценности, что обычно является оптимизацией производительности, но также изменяет семантику.
В F # значения являются неизменяемыми по умолчанию, и colorType
не имеет конструктора, поэтому все значения будут обнуляться, и вы не сможете ничего с ним сделать, пока не добавите конструктор. Вместо этого, изменчивость полей может вызвать головную боль, если тип остается структурой из-за вышеупомянутых изменений в семантике. Я бы не рекомендовал это.
Хотя начинание с обнуляемого изменяемого массива является типичным во многих языках программирования, в F # это лишь редко используемый инструмент повышения производительности. Обычно, сначала нужно начать с неизменный список с актуальными данными или же другие виды последовательностей и выполнять сопоставления исходных данных с новыми объектами, содержащими желаемый результат.
Я бы порекомендовал сначала сделать несколько уроков или читать по F # и привыкнуть к типичным инструментам языка. Такие темы, как структуры, явные поля (val) и императивные инструменты F #, могут быть не лучшей отправной точкой.
Есть много интернет-ресурсов для изучения F #, например tryfsharp.org, который даже имеет компилятор для примеров, если ваш браузер совместим.