#f#
#f#
Вопрос:
Я попытался переместить свое определение типа в другой файл .fs, я объявил одно и то же пространство имен в обоих файлах, но мой код, который использует тип, не распознает тип. Разрешает ли это F #?
Комментарии:
1. Да, но F # обрабатывает исходные файлы по порядку, поэтому вы должны убедиться, что файл, который ссылается на класс, появляется после файла, содержащего определение.
2. Вы имеете в виду, что файл определения класса должен называться в алфавитном порядке, чтобы он отображался перед файлом, который его использует?
3. Это не в алфавитном порядке, если вы используете VS, вы можете перемещать файлы вверх и вниз по списку с помощью Alt-Up / Down.
Ответ №1:
Как указано, да, это определенно поддерживается, но есть требование (в отличие, например, от C #), чтобы исходный файл, определяющий ваш тип, должен быть «выше» или «перед» исходным файлом, который его использует.
Итак, если у вас есть 2 файла:
File1.fs
namespace Type.Test
type Person = { Name : string; Age : int }
File2.fs
namespace Type.Test
module ConsumeType =
let richDude : Person = { Name = "Bill"; Age = 58 }
затем, когда компилятор вызывается из командной строки, сначала необходимо передать файл1.fs, а затем File2.fs:
c:> fsc.exe -a File1.fs File2.fs
Если вы используете Visual Studio (или какую-либо другую среду IDE) для компиляции, вам нужно поместить File1.fs «выше» File2.fs:
Как упоминалось @Lee в комментариях, вы можете изменить порядок файлов в VS, щелкнув по ним и используя Alt-Up / Alt-Down .