O Notion Formula 2.0 introduziu funções lambda, que permitem definir lógica reutilizável dentro de uma propriedade de fórmula. Sem lambdas, você precisa repetir cálculos ou escrever expressões longas e aninhadas. Este artigo explica o que são lambdas, como defini-los com let() e arrow functions, e como usá-los para simplificar fórmulas complexas. Você aprenderá a sintaxe, exemplos práticos e armadilhas comuns a evitar.
Principais Conclusões: Definindo e Usando Lambdas no Notion Formula 2.0
- Função let() + seta =>: Define um lambda nomeado que pode ser chamado várias vezes dentro de uma fórmula.
- Sintaxe de arrow function (params => expressão): Cria um lambda anônimo inline sem nome.
- Lambdas recursivos com let() e this: Permite que um lambda chame a si mesmo para operações iterativas como fatorial ou inversão de string.
O Que São Lambdas no Notion Formula 2.0?
Um lambda é uma função que você define dentro de uma propriedade de fórmula. Diferente das funções nativas (como formatDate ou sum), lambdas são definidos pelo usuário. Eles aceitam parâmetros e retornam um único valor. Lambdas são valores de primeira classe, ou seja, você pode passá-los como argumentos para outras funções ou armazená-los em variáveis usando let().
O principal benefício dos lambdas é a reutilização de código. Se você precisa aplicar a mesma transformação a vários campos em uma fórmula, escreve a lógica uma vez dentro de um lambda e a chama repetidamente. Lambdas também permitem recursão, o que é impossível com expressões simples.
Para usar lambdas, seu workspace deve ter o Notion Formula 2.0 ativado. Esta é a configuração padrão para todos os workspaces criados após 2023. Se você tem um workspace antigo, verifique no editor de fórmulas se há um botão chamado “Usar novo mecanismo de fórmula” no canto superior direito.
Como Definir um Lambda com let() e Arrow Functions
Existem duas maneiras de definir um lambda no Notion Formula 2.0: usando uma variável nomeada dentro de let() ou criando uma arrow function anônima diretamente em uma expressão.
Método 1: Lambda Nomeado Usando let()
A função let() associa uma ou mais variáveis a valores. O valor pode ser um lambda. A sintaxe é:
let( nomeLambda, (param1, param2) => expressão, expressãoResultado )
O primeiro argumento é o nome da variável (sem aspas). O segundo argumento é a definição do lambda. O terceiro argumento é a expressão onde você pode chamar o lambda. Você pode definir vários lambdas adicionando mais pares.
Exemplo: Calcular a área de um retângulo e dobrá-la.
let( area, (w, h) => w * h, area(5, 3) * 2 )
Isso retorna 30. O lambda area multiplica largura e altura. A expressão de resultado o chama com 5 e 3, depois multiplica por 2.
Método 2: Arrow Function Anônima
Um lambda anônimo é uma arrow function sem nome. É útil quando você precisa passar uma função para uma função de ordem superior como map() ou filter(). A sintaxe é:
(params) => expressão
Exemplo: Dobrar cada número em uma lista.
[1, 2, 3].map((x) => x * 2)
Isso retorna [2, 4, 6]. O lambda é definido inline dentro de map().
Exemplos Práticos de Lambdas em Fórmulas
Os exemplos a seguir mostram lambdas resolvendo problemas reais em bancos de dados do Notion.
Exemplo 1: Normalizar Campos de Texto
Suponha que um banco de dados tenha uma propriedade Título e uma propriedade Descrição. Você quer remover espaços extras, converter para minúsculas e remover pontuação de ambos. Sem um lambda, você repetiria a cadeia para cada campo.
let(
limpar, (texto) => replaceAll(lower(trim(texto)), "[^a-z0-9 ]", ""),
limpar(prop("Título")) + " " + limpar(prop("Descrição"))
)
O lambda limpar aplica todas as três transformações. Você o chama em ambas as propriedades, tornando a fórmula mais curta e fácil de editar.
Exemplo 2: Fatorial Recursivo
A recursão requer um lambda nomeado que possa referenciar a si mesmo. Use let() com uma variável que se refere ao lambda via this.
let( fat, (n) => if(n <= 1, 1, n * this(n - 1)), fat(5) )
Isso retorna 120. O lambda chama a si mesmo usando this, que se refere ao lambda sendo definido. Note que this só funciona dentro de uma variável de let().
Exemplo 3: Filtrar e Transformar um Rollup
Uma propriedade rollup retorna uma lista de valores de linhas relacionadas do banco de dados. Use filter() e map() com lambdas para processar a lista.
prop("Tarefas Relacionadas").filter((tarefa) => tarefa.Status == "Concluída").map((tarefa) => tarefa.Nome)
Isso retorna os nomes de todas as tarefas concluídas. O primeiro lambda filtra, o segundo mapeia.
Erros Comuns e Limitações dos Lambdas
Lambda Não Tem Acesso a prop() ou a Bindings de let()
Um lambda só vê seus parâmetros e funções nativas globais. Ele não pode chamar diretamente prop("Nome") ou acessar variáveis definidas em um let() externo. Para usar um valor de propriedade, passe-o como argumento ao chamar o lambda.
Incorreto:
let(
saudar, () => "Olá " + prop("Nome"),
saudar()
)
Correto:
let(
saudar, (nome) => "Olá " + nome,
saudar(prop("Nome"))
)
Lambda Recursivo Excede o Limite da Pilha
O Notion limita a profundidade de recursão a cerca de 1000 chamadas. Se seu lambda recursar muito profundamente, a fórmula retorna um erro. Para operações iterativas sobre listas grandes, use reduce() ou map() em vez de recursão.
Lambda Não Pode Ser Usado Fora do Escopo do let()
Um lambda definido dentro de let() só está disponível na expressão de resultado desse mesmo let(). Você não pode referenciá-lo em outra parte da fórmula fora do bloco let(). Defina o lambda novamente em cada bloco onde for necessário.
Sintaxe de Lambda do Notion Formula 2.0 vs Expressão Tradicional
| Item | Lambda | Expressão Tradicional |
|---|---|---|
| Reutilização | Defina uma vez, chame várias vezes | Precisa repetir a lógica cada vez |
| Suporte a recursão | Sim, via palavra-chave this |
Não é possível |
| Definição inline | Arrow function anônima | Não se aplica |
| Legibilidade para lógica complexa | Alta, a lógica é nomeada | Baixa, cadeias longas e aninhadas |
| Desempenho | Igual ao tradicional | Igual ao lambda |
Lambdas são a abordagem recomendada para qualquer fórmula que repita a mesma transformação ou exija recursão. Expressões tradicionais são adequadas para cálculos simples e únicos.
Agora você pode definir e chamar lambdas no Notion Formula 2.0 para reduzir repetição e permitir recursão. Comece convertendo uma fórmula repetitiva em seu banco de dados para usar um lambda nomeado com let(). Para uso avançado, tente combinar map() e filter() com lambdas anônimos para processar rollups. Lembre-se de passar valores de propriedades como argumentos, não acessá-los dentro do lambda.