Partilhar via


Introdução ao F# no Visual Studio Code

Você pode escrever F# em Visual Studio Code com o plug-in Ionide para obter uma ótima experiência leve e multiplataforma do ambiente de desenvolvimento integrado (IDE) com IntelliSense e refatoração de código. Visite Ionide.io para saber mais sobre o plugin.

Observação

Antes de começar, certifique-se de ter instalado o F# e o plug-in Ionide.

Crie o seu primeiro projeto com Ionide

Para criar um novo projeto F#, abra uma linha de comando e crie um novo projeto com a CLI do .NET:

dotnet new console -lang "F#" -o FirstIonideProject

Depois de concluído, altere o diretório para o projeto e abra o Visual Studio Code:

cd FirstIonideProject
code .

Depois que o projeto for carregado no Visual Studio Code, você verá o painel Gerenciador de Soluções F# no lado esquerdo da janela aberta. Isso significa que o Ionide carregou com sucesso o projeto que você acabou de criar. Você pode escrever código no editor antes deste ponto no tempo, mas uma vez que isso acontece, tudo terminou de carregar.

Escreva seu primeiro script

Depois de configurar o Visual Studio Code para usar scripts do .NET Core, navegue até o modo de exibição Explorer no Visual Studio Code e crie um novo arquivo. Nomeie-o MyFirstScript.fsx.

Agora adicione o seguinte código a ele:

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"

Esta função converte uma palavra em uma forma de Pig Latin. O próximo passo é avaliá-lo usando F# Interactive (FSI).

Realce toda a função (deve ter 11 linhas). Uma vez realçado, mantenha pressionada a tecla Alt e pressione Enter. Você notará uma janela de terminal aparecendo na parte inferior da tela, e ela deve ser semelhante a esta:

Exemplo de saída interativa F# com Ionide

Isso fez três coisas:

  1. Iniciou o processo FSI.
  2. Ele enviou o código destacado para o processo FSI.
  3. O processo FSI avaliou o código enviado.

Porque o que você enviou foi uma função , agora você pode chamar essa função com FSI! Na janela interativa, digite o seguinte:

toPigLatin "banana";;

Você verá o seguinte resultado:

val it: string = "ananabay"

Agora, vamos tentar com uma vogal como primeira letra. Insira o seguinte:

toPigLatin "apple";;

Você verá o seguinte resultado:

val it: string = "appleyay"

A função parece estar funcionando conforme o esperado. Parabéns, você acabou de escrever sua primeira função F# no Visual Studio Code e a avaliou com FSI!

Observação

Como você deve ter notado, as linhas no FSI são encerradas com ;;. Isso ocorre porque o FSI permite que você insira várias linhas. O ;; no final permite que o FSI saiba quando o código é concluído.

Explicação do código

Se você não tiver certeza sobre o que o código está realmente fazendo, aqui está um passo a passo.

Como você pode ver, toPigLatin é uma função que toma uma palavra como entrada e a converte em uma representação Pig-Latin dessa palavra. As regras para isso são as seguintes:

Se o primeiro caractere de uma palavra começar com uma vogal, adicione "yay" ao final da palavra. Se não começar com uma vogal, mova o primeiro caractere para o final da palavra e adicione "ay" a ela.

Você pode ter notado o seguinte no FSI:

val toPigLatin: word: string -> string

Isso afirma que toPigLatin é uma função que recebe um string como entrada (chamado word) e retorna outro string. Isso é conhecido como a assinatura de tipo da função, uma peça fundamental do F# que é a chave para entender o código F#. Você também notará isso se passar o mouse sobre a função no Visual Studio Code.

No corpo da função, você notará duas partes distintas:

  1. Uma função interna, chamada isVowel, que determina se um determinado caractere (c) é uma vogal, verificando se ele corresponde a um dos padrões fornecidos através de Correspondência de Padrões:

    let isVowel (c: char) =
        match c with
        | 'a' | 'e' | 'i' | 'o' | 'u'
        | 'A' | 'E' | 'I' | 'O' | 'U' -> true
        |_ -> false
    
  2. Uma expressão if..then..else que verifica se o primeiro caractere é uma vogal e constrói um valor de retorno a partir dos caracteres de entrada com base em se o primeiro caractere era uma vogal ou não:

    if isVowel word[0] then
        word + "yay"
    else
        word[1..] + string(word[0]) + "ay"
    

O fluxo de toPigLatin é assim:

Verifique se o primeiro caractere da palavra de entrada é uma vogal. Se for, junte "yay" ao final da palavra. Caso contrário, mova esse primeiro caractere para o final da palavra e adicione "ay" a ele.

Uma última observação a fazer sobre isto: em F#, não existe uma instrução explícita para retornar da função. Isso ocorre porque F# é baseado em expressão, e a última expressão avaliada no corpo de uma função determina o valor de retorno dessa função. Como if..then..else é em si uma expressão, a avaliação do corpo do bloco then ou do corpo do bloco else determina o valor retornado pela função toPigLatin.

Transforme o aplicativo de console em um gerador Pig Latin

As seções anteriores deste artigo demonstraram um primeiro passo comum na escrita de código F#: escrever uma função inicial e executá-la interativamente com o FSI. Isso é conhecido como desenvolvimento orientado por REPL, onde REPL significa "Read-Evaluate-Print Loop". É uma ótima maneira de experimentar a funcionalidade até ter algo funcionando.

A próxima etapa no desenvolvimento orientado por REPL é mover o código de trabalho para um arquivo de implementação F#. Ele pode então ser compilado pelo compilador F# em um assembly que pode ser executado.

Para começar, abra o arquivo de Program.fs que você criou anteriormente com a CLI do .NET. Você notará que algum código já está lá.

Em seguida, crie um novo module chamado PigLatin e copie a função toPigLatin que você criou anteriormente para ele como tal:

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"

Este módulo deve estar acima da função main e abaixo da declaração open System. A ordem das declarações é importante em F#, portanto, você precisará definir a função antes de chamá-la em um arquivo.

Agora, na função main, chame sua função geradora Pig Latin nos argumentos:

[<EntryPoint>]
let main args =
    for arg in args do
        let newArg = PigLatin.toPigLatin arg
        printfn "%s in Pig Latin is: %s" arg newArg

    0

Agora você pode executar seu aplicativo de console a partir da linha de comando:

dotnet run apple banana

E você verá que ele produz o mesmo resultado que o seu arquivo de script, mas desta vez como um programa em execução!

Resolução de problemas do Ionide

Aqui estão algumas maneiras de solucionar certos problemas que você pode encontrar:

  1. Para obter os recursos de edição de código do Ionide, seus arquivos F# precisam ser salvos no disco e dentro de uma pasta que está aberta no espaço de trabalho Visual Studio Code.
  2. Se você fez alterações no seu sistema ou instalou os pré-requisitos do Ionide com o Visual Studio Code aberto, reinicie o Visual Studio Code.
  3. Se você tiver caracteres inválidos em seus diretórios de projeto, Ionide pode não funcionar. Renomeie seus diretórios de projeto se esse for o caso.
  4. Se nenhum dos comandos Ionide estiver funcionando, verifique seu de Vinculações de Chave de Código do Visual Studio para ver se você está substituindo-os por acidente.
  5. Se o Ionide estiver quebrado na sua máquina e nenhum dos itens acima tiver corrigido o problema, tente remover o diretório ionide-fsharp na sua máquina e reinstale o pacote de plugins.
  6. Se um projeto falhou ao carregar (o Gerenciador de Soluções F# mostrará isso), clique com o botão direito do mouse nesse projeto e clique em Ver detalhes para obter mais informações de diagnóstico.

Ionide é um projeto de código aberto construído e mantido por membros da comunidade F#. Denuncie problemas e sinta-se à vontade para contribuir no repositório GitHub ionide-vscode-fsharp .

Você também pode pedir mais ajuda aos desenvolvedores do Ionide e à comunidade F# no canal Ionide Gitter.

Próximos passos

Para saber mais sobre o F# e os recursos da linguagem, confira Tour of F#.