Notion Formula 2.0 introduziu funções lambda, que permitem transformar cada elemento de um array sem escrever fórmulas complexas aninhadas. Muitos usuários têm dificuldade com a sintaxe e o escopo das expressões lambda ao aplicá-las a rollups de banco de dados ou propriedades de seleção múltipla. Este artigo explica o que é uma função lambda, como ela funciona com métodos de array como map(), e fornece instruções passo a passo para transformar elementos de array em seus bancos de dados do Notion.
Principais Conclusões: Usando Lambda na Fórmula 2.0 do Notion
- prop(“Items”).map(current, index => current 2): Multiplica cada número no array Items por 2 usando uma lambda
- prop(“Tags”).filter(current => current.contains(“urgent”)): Mantém apenas os elementos do array que contêm a palavra “urgente”
- prop(“Prices”).reduce(acc, current => acc + current, 0): Soma todos os números no array Prices usando uma lambda redutora
Entendendo Funções Lambda na Fórmula 2.0 do Notion
Uma função lambda é uma função anônima inline que você passa diretamente para métodos de array como map(), filter() ou reduce(). Na Fórmula 2.0 do Notion, a sintaxe lambda usa parênteses com parâmetros, uma seta => e uma expressão. A forma básica é (param1, param2) => expressão.
Quando você chama prop("ArrayProperty").map(current => expressão), a lambda é executada uma vez para cada elemento do array. A variável current contém o valor do elemento atual. Você também pode acessar o índice com (current, index) => expressão. A lambda deve retornar um único valor que se torna parte do novo array.
O Notion suporta três métodos de array que aceitam lambdas: map() para transformar cada elemento, filter() para selecionar elementos que atendem a uma condição e reduce() para combinar todos os elementos em um único valor. Cada método exige que a lambda retorne um tipo específico: o elemento transformado para map(), um booleano para filter() e qualquer tipo para reduce().
Passos para Transformar Elementos de Array com Lambda
- Identifique a propriedade de origem
Abra seu banco de dados do Notion e localize a propriedade que contém o array. Pode ser uma seleção múltipla, um rollup que retorna um array ou uma propriedade de fórmula que gera um array. Anote o nome exato da propriedade, pois você a referenciará comprop("NomeDaPropriedade"). - Crie ou edite uma propriedade de fórmula
Adicione uma nova propriedade de Fórmula ou edite uma existente. Clique no editor de fórmulas. A fórmula deve começar com a fonte do array seguida por um ponto e o nome do método. Por exemplo,prop("Numbers").map(current => current + 10)adiciona 10 a cada número. - Escreva a expressão lambda
Dentro dos parênteses apósmap(), defina a lambda. Use um nome de parâmetro comocurrentou uma única letra comox. Escreva a seta=>e depois a expressão de transformação. Por exemplo, para converter cada string para maiúsculas, useprop("Tags").map(current => current.upper()). - Use o parâmetro de índice se necessário
Se sua transformação depender da posição do elemento, adicione um segundo parâmetro. O índice começa em 0. Por exemplo,prop("Items").map((current, index) => current + index)adiciona o número da posição a cada valor. - Teste com um filter ou reduce simples
Antes de aplicar lógica complexa, teste a lambda com um filter:prop("Numbers").filter(current => current > 5). Isso retorna apenas números maiores que 5. Depois tente reduce:prop("Numbers").reduce((acc, current) => acc + current, 0)soma todos os números. Isso confirma que sua sintaxe lambda funciona. - Encadeie múltiplos métodos de array
Você pode combinar métodos. Por exemplo,prop("Numbers").filter(current => current > 5).map(current => current 2)primeiro mantém números acima de 5, depois os dobra. Cada método retorna um array, então o próximo método recebe o array filtrado.
Erros Comuns e Limitações
Lambda retorna o tipo errado
Se filter() receber um valor não booleano, ele o trata como falso. Certifique-se de que a expressão lambda dentro de filter() avalie como verdadeiro ou falso. Por exemplo, filter(current => current) só funciona se current já for um booleano. Use comparações explícitas como filter(current => current == true).
Usar o nome do parâmetro errado
Os nomes dos parâmetros diferenciam maiúsculas de minúsculas. Se você usar Current em vez de current no corpo da lambda, o Notion retorna um erro. Use nomes de parâmetros em minúsculas para evitar confusão.
Lambda não pode acessar outras propriedades da linha
Dentro de uma lambda, você não pode chamar prop() para buscar outra propriedade. A lambda só vê seus parâmetros e funções globais como now() ou length(). Para usar outros dados da linha, transforme o array antes da lambda ou use uma propriedade de fórmula separada.
Métodos de array retornam arrays vazios em caso de erro
Se a propriedade de origem não for um array, métodos como map() retornam um array vazio. Certifique-se de que o tipo da propriedade seja seleção múltipla, rollup que retorna um array ou uma fórmula que gera um array. Use prop("Property").empty() para verificar se há arrays vazios antes de aplicar lambdas.
Comparação de Métodos de Array para Operações Lambda
| Método | Parâmetros Lambda | Valor de Retorno |
|---|---|---|
| map() | (current, index) | Novo array com elementos transformados |
| filter() | (current, index) | Novo array com elementos onde lambda retorna verdadeiro |
| reduce() | (accumulator, current, index) | Valor único acumulado |
Agora você pode usar funções lambda na Fórmula 2.0 do Notion para transformar arrays de propriedades de seleção múltipla, rollups ou saídas de fórmula. Comece aplicando map() para modificar cada elemento, depois explore filter() para seleção condicional e reduce() para agregação. Uma dica avançada: combine filter() e map() em uma única fórmula para selecionar e transformar dados sem criar propriedades intermediárias.