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.