Method

Métodos são receitas que podem receber argumentos para "preencher as lacunas em branco".

Definição

Um método é definido anonimamente com uma seta fina ->, assim:

<argumentos> -> <receita>

Os argumentos podem ser omitidos se nenhum for necessário:

-> <receita>  # aridade zero

Para registrar um método no escopo, atribua-o a um identificador:

<identificador> = <argumentos> -> <receita>

O número de argumentos na assinatura de um método é fixo e todos os argumentos são obrigatórios. No entanto, se você passar argumentos adicionais para o método, eles serão ignorados.

Os argumentos são tratados como entradas imutáveis dentro do escopo de execução do método. Se você precisar de argumentos opcionais ou mutáveis, poderá passar um escopo como argumento, que pode agrupar vários "argumentos". Alternativamente, você pode usar um tipo personalizado com valores padrão.

Auto-retorno

FatScript usa o auto-retorno, ou seja, o último valor é retornado automaticamente:

resposta: Method = (aGrandeQuestao) -> {
  # TODO: explicar a vida, o universo e tudo mais
  42
}

resposta("6 x 7 = ?")  # retorna: 42

Truque de chamada automática

Se um método é acessado dentro de um escopo com a sintaxe de ponto e não requer argumentos (aridade zero), ele será chamado "automaticamente":

foo = {
  bar = -> 'oi'
}

foo.bar()  # retorna 'oi'
foo.bar    # também retorna 'oi' devido à chamada automática

Nota: esses métodos ainda podem ser referenciados sem acionar o recurso de chamada automática usando a sintaxe de obtenção:

foo('bar')  # retorna uma referência ao método

Argumento implícito

Uma conveniência oferecida pelo FatScript é a possibilidade de fazer referência a um valor passado para o método sem precisar especificar um nome a ele explicitamente. Neste caso, o argumento implícito é então representado pelo sublinhado _.

Aqui está um exemplo que ilustra o uso de argumentos implícitos:

dobro = -> _ * 2
dobro(3)  # saída: 6

Você pode usar argumentos implícitos sempre que precisar realizar uma operação simples em um único argumento sem atribuir um nome específico a ele.

Veja também

results matching ""

    No results matching ""