Начало работы с F# в Visual Studio Code
Вы можете написать F# в Visual Studio Code с подключаемым модулем Ionide, чтобы получить отличный кроссплатформенный кроссплатформенный интерфейс интегрированной среды разработки (IDE) с IntelliSense и рефакторингом кода. Посетите Ionide.io , чтобы узнать больше о подключаемом модуле.
Чтобы начать, убедитесь, что у вас есть F# и подключаемый модуль Ionide правильно установлен.
Создание первого проекта с помощью Ionide
Чтобы создать проект F#, откройте командную строку и создайте проект с помощью .NET CLI:
dotnet new console -lang "F#" -o FirstIonideProject
После завершения измените каталог на проект и откройте Visual Studio Code:
cd FirstIonideProject
code .
После загрузки проекта в Visual Studio Code отобразится панель Обозреватель решений F# в левой части окна. Это означает, что Ионида успешно загружает только что созданный проект. Вы можете написать код в редакторе до этого момента времени, но как только это произойдет, все готово к загрузке.
Написание первого скрипта
После настройки Visual Studio Code для использования скриптов .NET Core перейдите к представлению Обозреватель в Visual Studio Code и создайте новый файл. Назовите его MyFirstScript.fsx.
Теперь добавьте в него следующий код:
let toPigLatin (word: string) =
let isVowel (c: char) =
match c with
| 'a' | 'e' | 'i' | 'o' | 'u'
| 'A' | 'E' | 'I' | 'O' | 'U' -> true
|_ -> false
if isVowel word[0] then
word + "yay"
else
word[1..] + string(word[0]) + "ay"
Эта функция преобразует слово в форму Pig Latin. Следующий шаг — оценить его с помощью F# Interactive (FSI).
Выделите всю функцию (она должна иметь длину 11 строк). После выделения удерживайте клавишу ALT и нажмите клавишу ВВОД. Вы заметите, что окно терминала появится в нижней части экрана, и оно должно выглядеть примерно так:
Это сделал три вещи:
- Он запустил процесс FSI.
- Он отправил выделенный вами код в процесс FSI.
- Процесс FSI оценил отправленный вами код.
Так как вы отправили функцию, теперь можно вызвать эту функцию с помощью FSI! В интерактивном окне введите следующее:
toPigLatin "banana";;
Должен отобразиться следующий результат:
val it: string = "ananabay"
Теперь давайте попробуем с гласной в качестве первой буквы. Введите следующее:
toPigLatin "apple";;
Должен отобразиться следующий результат:
val it: string = "appleyay"
Эта функция, как представляется, работает должным образом. Поздравляем, вы только что написали первую функцию F# в Visual Studio Code и оценили ее с помощью FSI!
Примечание.
Как вы могли заметить, строки в FSI завершаются.;;
Это связано с тем, что FSI позволяет вводить несколько строк. В ;;
конце FSI сообщает FSI о завершении кода.
Объяснение кода
Если вы не уверены в том, что на самом деле делает код, вот пошаговые инструкции.
Как видно, это функция, toPigLatin
которая принимает слово в качестве входных данных и преобразует его в представление этого слова Pig-Latin. Ниже приведены правила для этого.
Если первый символ в слове начинается с гласного, добавьте "yay" в конец слова. Если он не начинается с гласной, переместите первый символ в конец слова и добавьте "ay" в него.
Возможно, вы заметили следующее в FSI:
val toPigLatin: word: string -> string
Это состояние, toPigLatin
которое принимает в string
качестве входных данных (вызывается word
) и возвращает другую string
. Это называется сигнатурой типа функции, основным элементом F# является ключом для понимания кода F#. Вы также заметите это, если наведите указатель мыши на функцию в Visual Studio Code.
В тексте функции вы заметите две отдельные части:
Внутренняя функция, вызываемая
isVowel
, которая определяет, является ли заданный символ (c
) гласным путем проверка, если он соответствует одному из предоставленных шаблонов с помощью сопоставления шаблонов:let isVowel (c: char) = match c with | 'a' | 'e' | 'i' | 'o' | 'u' | 'A' | 'E' | 'I' | 'O' | 'U' -> true |_ -> false
if..then..else
Выражение, которое проверка, если первый символ является гласным, и создает возвращаемое значение из входных символов на основе того, был ли первый символ гласным или нет:if isVowel word[0] then word + "yay" else word[1..] + string(word[0]) + "ay"
Таким образом, поток toPigLatin
состоит из следующих:
Проверьте, является ли первый символ входного слова гласным. Если это так, прикрепите "yay" к концу слова. В противном случае переместите первый символ в конец слова и добавьте "ay" в него.
Есть одна последняя вещь, чтобы заметить об этом: в F#, нет явной инструкции для возврата из функции. Это связано с тем, что F# основан на выражениях, а последнее выражение, вычисляемое в теле функции, определяет возвращаемое значение этой функции. Так как if..then..else
это выражение, оценка текста блока или тела then
else
блока определяет значение, возвращаемое toPigLatin
функцией.
Преобразование консольного приложения в генератор Pig Latin
В предыдущих разделах этой статьи показан общий первый шаг написания кода F#: написание начальной функции и его интерактивное выполнение с помощью FSI. Это называется разработкой на основе REPL, где REPL обозначает "Цикл чтения и оценки печати". Это отличный способ поэкспериментировать с функциональностью, пока у вас есть что-то рабочее.
Следующий шаг в разработке на основе REPL — перемещение рабочего кода в файл реализации F#. Затем его можно скомпилировать компилятором F# в сборку, которую можно выполнить.
Чтобы начать, откройте файл Program.fs , созданный ранее с помощью .NET CLI. Вы заметите, что некоторый код уже есть.
Затем создайте новый module
вызов PigLatin
и скопируйте созданную ранее функцию в нее toPigLatin
следующим образом:
module PigLatin =
let toPigLatin (word: string) =
let isVowel (c: char) =
match c with
| 'a' | 'e' | 'i' | 'o' | 'u'
| 'A' | 'E' | 'I' | 'O' | 'U' -> true
|_ -> false
if isVowel word[0] then
word + "yay"
else
word[1..] + string word[0] + "ay"
Этот модуль должен быть над main
функцией и ниже open System
объявления. Порядок объявлений имеет значение в F#, поэтому перед вызовом функции в файле необходимо определить функцию.
Теперь в main
функции вызовите функцию генератора Pig Latin в аргументах:
[<EntryPoint>]
let main args =
for arg in args do
let newArg = PigLatin.toPigLatin arg
printfn "%s in Pig Latin is: %s" arg newArg
0
Теперь вы можете запустить консольное приложение из командной строки:
dotnet run apple banana
И вы увидите, что он выводит тот же результат, что и файл скрипта, но на этот раз как запущенная программа!
Устранение неполадок Ionide
Ниже приведены несколько способов устранения некоторых проблем, с которыми можно столкнуться:
- Чтобы получить функции редактирования кода Ionide, файлы F# необходимо сохранить на диске и в папке, открытой в рабочей области Visual Studio Code.
- Если вы внесли изменения в систему или установили предварительные требования Ionide с открытым кодом Visual Studio Code, перезапустите Visual Studio Code.
- Если у вас есть недопустимые символы в каталогах проектов, Ionide может не работать. Переименуйте каталоги проектов, если это так.
- Если ни одна из команд Ionide не работает, проверка привязки ключей Visual Studio Code, чтобы узнать, переопределяете ли они случайно.
- Если ионида повреждена на компьютере, и ни одна из указанных выше проблем не устранена, попробуйте удалить
ionide-fsharp
каталог на компьютере и переустановить набор подключаемых модулей. - Если не удалось загрузить проект (Обозреватель решений F# отобразится это), щелкните правой кнопкой мыши этот проект и нажмите кнопку "Просмотреть сведения", чтобы получить дополнительные диагностические сведения.
Ионида — это проект с открытым исходным кодом, созданный и поддерживаемый членами сообщества F#. Сообщите о проблемах и можете внести свой вклад в репозиторий GitHub ionide-vscode-fsharp.
Вы также можете обратиться за дополнительной помощью от разработчиков Ionide и сообщества F# в канале Ionide Gitter.
Следующие шаги
Чтобы узнать больше о F# и функциях языка, проверка обзор F#.