Справочник по F# Interactive (fsi.exe)
F# Interactive (fsi.exe) используется для интерактивного запуска кода F# в консоли или для выполнения скриптов F#. Другими словами, F# interactive выполняет команду REPL (чтение, оценка, цикл печати) для языка F#.
Интерактивное программирование с помощью F#
F# Interactive можно использовать для написания кода в консоли или в окне Visual Studio.
Чтобы открыть F# Interactive из консоли, запустите fsi.exe. fsi.exe находится в следующем каталоге: c:\Program Files (x86)\Microsoft SDKs\F#\<версия>\Framework\<версия>\. Дополнительные сведения о доступных параметрах командной строки см. в разделе Параметры F# Interactive.
Чтобы запустить F# Interactive через Visual Studio, нажмите соответствующую кнопку на панели инструментов, обозначенную F# Interactive, или используйте сочетание клавиш CTRL+ALT+F. После этого откроется интерактивное окно — окно инструментов с запущенным сеансом F# Interactive. Вы также можете выбрать код, который вы хотите запустить в интерактивном окне, и нажать сочетание клавиш ALT+ВВОД. F# Interactive откроется в окне инструментов F# Interactive. При использовании этого сочетания клавиш, убедитесь, что фокус находится в редактора.
Независимо от того, пользуетесь вы консолью или Visual Studio, появится командная строка и интерпретатор будет ждать ввода данных. Можно ввести код так же, как это делается в файле кода. Чтобы скомпилировать и выполнить код, введите две точки с запятой (;;), чтобы разграничить одну или несколько линий входных данных.
F# Interactive попытается скомпилировать код и, в случае успеха, выполняет код и напечатает сигнатуру типов и значений, которые он скомпилировал. В случае ошибки интерпретатор напечатает сообщения об ошибке.
Код, введенный в том же сеансе имеет доступ ко всем конструкциям, введенным прежде, так что вы можете надстраивать программы. В случае необходимости благодаря значительному объему буфера в окне инструментов можно скопировать код в файл.
При запуске в Visual Studio F# Interactive работает независимо от проекта, поэтому, например, использовать определенные в проекте конструкции в F# Interactive можно, только если скопировать код функции в интерактивное окно.
Если открыт проект, который ссылается на некоторые библиотеки, на эти же библиотеки можно ссылаться в F# Interactive через обозреватель решений. Для ссылки на библиотеки в F# Interactive разверните узел Ссылки узел, откройте контекстное меню для библиотеки и выберите пункт Отправить в F# Interactive.
Управлять аргументами (параметрами) командной строки F# Interactive можно путем корректировки значений параметров. В меню Сервис выберите пункт Параметры..., а затем разверните узел Инструменты F#. Двумя параметрами, которые можно изменить, являются параметры F# Interactive и параметр 64-разрядная версия F# Interactive, который используется только в том случае, если F# Interactive выполняется на 64-разрядном компьютере. Этот параметр указывает, следует ли выполнять выделенную 64-разрядную версию fsi.exe или fsianycpu.exe, которая использует архитектуру компьютера для определения типа выполняемого процесса — 32-разрядного или 64-разрядного.
Создание скриптов с использованием F#
Для скриптов используется расширение файла .fsx или .fsscript. Вместо компиляции исходного кода и последующего запуска скомпилированной сборки можно просто открыть fsi.exe и указать имя файла скрипта исходного кода F#, а F# interactive прочтет код и выполнит его в реальном времени.
Различия между интерактивной средой, средой скриптов и скомпилированной средой
При компиляции кода в F# Interactive независимо от того, запущен он интерактивно или для выполнения скрипта, определяется символ INTERACTIVE. При компиляции кода в компиляторе определяется символ COMPILED. Таким образом, если код должен различаться в режиме компиляции и в интерактивном режиме, можно воспользоваться директивами препроцессора для условной компиляции, чтобы определить, что именно использовать.
Некоторые директивы, доступные при выполнении скриптов в F# Interactive, недоступны при выполнении компилятора. В следующей таблице приведены директивы, доступные при использовании F# Interactive.
Директива |
Описание |
---|---|
#help |
Отображает сведения о доступных директивах. |
#I |
Задает путь поиска сборок в кавычках. |
#load |
Читает исходный файл, компилирует и запускает его. |
#quit |
Завершает сеанс F# Interactive. |
#r |
Ссылается на сборку. |
#time ["on"|"off"] |
Сама по себе директива #time включает или выключает отображение сведений о производительности. Когда она включена, F# Interactive измеряет реальное время, время ЦП и сведения о коллекции мусора для каждого интерпретированного и выполненного код раздела. |
При указании файлов или путей в F# Interactive ожидается строковый литерал. Следовательно, файлы и пути должны быть заключены в кавычки; можно использовать обычные escape-символы. Кроме того, можно использовать символ @, чтобы чтобы строка, содержащая путь, интерпретировалась в F# Interactive как буквальная строка. В этом случае F# Interactive игнорирует все escape-символы.
Одно из различий между скомпилированным и интерактивным режимами заключается в том, как можно получить доступ к аргументам командной строки. В скомпилированном режиме используйте GetCommandLineArgs. В скриптах используйте fsi.CommandLineArgs.
Следующий код показывает, как создать функцию, которая читает аргументы командной строки в скрипте, и дать ссылку на другую сборку из скрипта. Первый файл кода, MyAssembly.fs, является кодом для сборки, на которую дается ссылка. Скомпилируйте этот файл с помощью командной строки fsc -a MyAssembly.fs и выполните второй файл в качестве скрипта с помощью командной строки fsi --exec file1.fsx test
// MyAssembly.fs
module MyAssembly
let myFunction x y = x + 2 * y
// file1.fsx
#r "MyAssembly.dll"
printfn "Command line arguments: "
for arg in fsi.CommandLineArgs do
printfn "%s" arg
printfn "%A" (MyAssembly.myFunction 10 40)
Выходные данные выглядят следующим образом:
file1.fsx
test
60
Связанные разделы
Заголовок |
Описание |
---|---|
Описание синтаксиса командной строки и параметры для F# Interactive, fsi.exe. |
|
Описание функциональных возможностей библиотек, которые доступны при выполнении кода в F# Interactive. |