Начало работы с F# в Visual Studio Code
Вы можете написать F# в
Заметка
Прежде чем начать, убедитесь, что вы установили и 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 знать, когда код завершится.
Объяснение кода
Если вы не уверены в том, что на самом деле делает код, вот пошаговые инструкции.
Как видно, 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 означает "Цикл чтенияEvaluate-Print". Это отличный способ поэкспериментировать с функциональностью, пока у вас есть что-то рабочее.
Следующий шаг в разработке на основе 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 не работает на вашем компьютере и ни одно из приведенных выше решений не помогло, попробуйте удалить каталог
ionide-fsharp
на вашем компьютере и переустановить пакет плагинов. - Если не удалось загрузить проект (обозреватель решений F# отобразит это), щелкните его правой кнопкой мыши и щелкните Просмотреть сведения, чтобы получить дополнительные диагностические сведения.
Ионида — это проект с открытым исходным кодом, созданный и поддерживаемый членами сообщества F#. Сообщите о проблемах и не стесняйтесь вносить свой вклад в репозиторий ionide-vscode-fsharp GitHub.
Вы также можете обратиться за дополнительной помощью от разработчиков Ionide и сообщества F# в канале Ionide Gitter канала.
Дальнейшие действия
Дополнительные сведения о F# и функциях языка см. в обзореF#.