Поделиться через


Справочник по F# Interactive (fsi.exe)

F# Interactive (fsi.exe) используется для интерактивного запуска кода F# в консоли или для выполнения скриптов F#. Другими словами, F# Interactive выполняет команду REPL (чтение, оценка, цикл печати) для языка F#.

Интерактивное программирование при помощи F#

F# Interactive можно использовать для написания кода в консоли или в окне Visual Studio.

Чтобы открыть F# Interactive из консоли, запустите fsi.exe. Дополнительные сведения о доступных параметрах командной строки см. в разделе Параметры F# Interactive.

Чтобы запустить F# Interactive через Visual Studio 2010, нажмите на соответствующую кнопку панели инструментов, обозначенную F# Interactive, или используйте сочетание клавиш CTRL+ALT+F. После этого откроется интерактивное окно — окно инструментов с запущенным сеансом F# Interactive. Вы также можете выбрать код, который вы хотите запустить в интерактивном окне, и нажать сочетание клавиш ALT+ENTER. Интерактивный режим F# открывается в окне инструментов, обозначенном F# Interactive.

Независимо от того, пользуетесь вы консолью или Visual Studio 2010, появится командная строка и интерпретатор будет ждать ввода данных. Вы можете ввести код так же, как это делается в файле кода. Чтобы скомпилировать и выполнить код, введите две точки с запятой (;;), чтобы разграничить одну или несколько линий входных данных.

Интерактивный режим F# попытается скомпилировать файл и, в случае удачи, выполнит код и напечатает сигнатуру типов и значений, которые он скомпилировал. В случае ошибки интерпретатор напечатает сообщения об ошибке.

Код, введенный в том же сеансе, имеет доступ ко всем конструктам, введенным прежде, так что вы можете надстраивать программы. Широкий буфер в окне инструментов позволяет вам копировать код в файл в случае необходимости.

При запуске в Visual Studio F# Interactive работает независимо от проекта, поэтому, например, использовать определенные в проекте конструкции в F# Interactive можно, только если скопировать код функции в интерактивное окно.

Управлять аргументами (параметрами) командной строки F# Interactive можно, корректируя значения параметров F# Interactive. В меню Сервис выберите Параметры... и разверните узел Инструменты F#. Два параметра, которые можно изменить, — это параметры командной строки F# Interactive и путь к исполняемому файлу fsi.exe, который можно использовать для запуска файла fsi.exe от другой версии языка F#.

Написание скрипта с использованием 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

Описывает синтаксис командной строки и параметры для F# Interactive, fsi.exe.

Справочные материалы по библиотеке F# Interactive

Описывает функциональные возможности библиотек, которые доступны при выполнении кода в F# Interactive.

Журнал изменений

Дата

Журнал

Причина

Октябрь 2010

Добавлена таблица поддерживаемых директив.

Улучшение информации.