- Sift Roblox é uma biblioteca de dados imutáveis para projetos em Luau e roblox-ts.
- As opções de instalação incluem Wally, npm, a Biblioteca do Roblox, Itch.io e releases do GitHub.
- O suporte a Luau usa tipos nativos sem verificação de tipos em tempo de execução pela biblioteca.
- O suporte a roblox-ts está disponível por meio do pacote
@rbxts/sift, que inclui definições de tipos. - Aviso sobre versões: o Sift continua na série v0.x, portanto, releases menores podem incluir alterações incompatíveis.
Guia para iniciantes de Sift Roblox: o que é
Sift Roblox é uma biblioteca para desenvolvedores que trabalham com dados imutáveis em Luau e roblox-ts. Ela não é uma experiência jogável do Roblox, um sistema de personagens ou uma mecânica de progressão. Em vez disso, oferece aos criadores funções utilitárias para atualizar arrays, dicionários e conjuntos sem modificar diretamente os dados originais.
O projeto é fortemente baseado na biblioteca Llama, que não é mais mantida. O Sift segue uma finalidade semelhante, mas utiliza tipos nativos do Luau, testes reorganizados, documentação gerada e definições de tipos integradas para TypeScript. Essas diferenças tornam a biblioteca útil para projetos que precisam de atualizações de estado previsíveis ou utilitários de dados compartilhados.
| Área | Abordagem do Sift | Benefício para iniciantes |
|---|---|---|
| Objetivo principal | Utilitários de dados imutáveis | Atualizações de estado mais seguras |
| Linguagens compatíveis | Luau e roblox-ts | Fluxos de trabalho flexíveis no Roblox |
| Principais coleções | Arrays, dicionários e conjuntos | Abrange estruturas de dados comuns |
| Sistema de tipos | Tipos nativos do Luau | Menor dependência de pacotes de tipos em tempo de execução |
| Estabilidade | Série de desenvolvimento v0.x | Revisar alterações antes de atualizar |
A ideia central é simples: em vez de alterar uma tabela no local, crie um resultado atualizado preservando o valor original. Esse padrão pode tornar mais fáceis de entender os dados do inventário, as configurações dos jogadores, os objetos de configuração e o estado replicado.
Arrays
Use utilitários de listas para diferenças, diferenças simétricas, congelamento, verificações de tipo e embaralhamento.
Dicionários
Trabalhe com dados de chave e valor usando entradas, congelamento, congelamento profundo e conversão de entradas.
Conjuntos
Conte valores e calcule diferenças entre coleções sem alterar o conjunto de origem.
Comece com uma estrutura de dados pequena, como um dicionário de configurações ou uma lista de itens. Aprender atualizações imutáveis em um sistema limitado é mais fácil do que reescrever um projeto inteiro de uma vez.
Opções de instalação para projetos do Roblox
O Sift pode ser adicionado a um projeto de desenvolvimento do Roblox de várias maneiras. A melhor escolha depende de como sua equipe gerencia as dependências. O Wally é adequado para fluxos de trabalho de pacotes via linha de comando, projetos roblox-ts podem usar npm, e a instalação manual funciona quando você prefere colocar o modelo diretamente no Studio.
A documentação de referência identifica o Sift como disponível por meio do Wally, Itch.io, Biblioteca do Roblox e releases do GitHub. Ela também observa que o projeto é gratuito e de código aberto, enquanto uma página no Itch.io pode ser usada para patrocínio opcional.
| Método de instalação | Mais adequado para | Ação principal | Consideração principal |
|---|---|---|---|
| Wally | Projetos Luau com gerenciamento de dependências | Adicionar o Sift ao wally.toml e executar wally install | Requer um fluxo de trabalho com Wally |
| npm | Projetos roblox-ts | Instalar @rbxts/sift | Usa ferramentas de TypeScript |
| Biblioteca do Roblox | Fluxos de trabalho manuais no Studio | Inserir a biblioteca no Studio | As atualizações são feitas manualmente |
| Releases do GitHub | Fluxos manuais ou automatizados | Baixar uma cópia de uma release | Verificar cuidadosamente a release selecionada |
| Sincronização com Rojo | Projetos com controle de versão | Sincronizar o modelo do Sift pelo Rojo | Requer uma configuração existente do Rojo |
Configuração do Wally
Em um projeto Wally, adicione a dependência à seção [dependencies] do arquivo wally.toml. O formato documentado usa um marcador de versão v0.x:
[dependencies]
Sift = "csqrl/sift@0.0.X"
Substitua 0.0.X pela versão que pretende usar e execute:
wally install
Mantenha a versão selecionada visível na configuração do projeto. Isso facilita reproduzir o mesmo conjunto de dependências em diferentes máquinas e reduz a confusão quando uma nova release menor altera o comportamento.
Configuração do roblox-ts
A documentação informa que o Sift inclui definições de tipos para TypeScript e pode ser instalado para roblox-ts com:
npm install @rbxts/sift
Uma importação básica e uma operação com dicionário podem ser semelhantes a esta:
import Sift from "@rbxts/sift"
const updated = Sift.Dictionary.merge(
{ a: 1, c: 2 },
{ b: 3, c: Sift.None }
)
O resultado documentado é um dicionário contendo a: 1 e b: 3. O valor Sift.None remove a entrada existente c durante a combinação.
Instalação manual
A instalação manual consiste em obter uma cópia da Biblioteca do Roblox ou de uma release do GitHub e colocá-la no Studio. O modelo do Sift também pode ser sincronizado com o Rojo. Esse método é acessível para pequenos experimentos, mas as equipes devem registrar a versão da release e a data de instalação para manter as atualizações futuras sob controle.
O Sift ainda está na série v0.x. A documentação alerta que podem ocorrer alterações incompatíveis quando a versão menor aumenta; portanto, teste as atualizações das dependências antes de usá-las em produção.
Primeira atualização de dados passo a passo
A maneira mais rápida de entender o Sift é praticar uma atualização imutável por vez. Comece com um dicionário pequeno, examine o valor retornado e confirme que a tabela original continua sendo o valor de referência para a lógica da aplicação.
Escolha uma estrutura de dados pequena
Comece com configurações, um objeto de configuração simples ou uma lista curta de itens. Evite introduzir o Sift em vários sistemas não relacionados durante o primeiro teste.
Selecione a API de coleção correspondente
Use funções de dicionário para registros de chave e valor, funções de array para listas ordenadas e funções de conjunto para coleções de valores únicos. Manter a API alinhada à estrutura de dados melhora a legibilidade.
Crie o resultado atualizado
Chame o utilitário relevante do Sift e armazene o valor retornado em uma nova variável. Trate o resultado como o próximo estado, em vez de editar diretamente a tabela original.
Verifique o resultado
Confira os dados retornados e teste casos extremos, incluindo chaves ausentes, coleções vazias, valores aninhados e entradas repetidas quando for relevante.
Uma combinação de dicionários é um exemplo inicial útil:
local Sift = require(path.to.Sift)
local original = {
Coins = 100,
Title = "Rookie",
}
local updated = Sift.Dictionary.merge(original, {
Coins = 125,
Title = Sift.None,
})
Nesse padrão, o dicionário retornado pode representar o próximo estado. O valor de Coins é substituído, enquanto Title é removido por meio de Sift.None. O caminho exato da importação depende do método de instalação e da estrutura do projeto; portanto, use o caminho gerado pelo seu fluxo de trabalho de dependências.
| Operação | Coleção | Uso prático |
|---|---|---|
difference | Array ou conjunto | Encontrar valores presentes em uma coleção, mas não nas outras |
differenceSymmetric | Array ou conjunto | Encontrar valores exclusivos de um dos lados |
freeze | Array ou dicionário | Impedir alterações diretas em uma coleção |
freezeDeep | Array ou dicionário | Congelar arrays ou dicionários aninhados |
merge | Dicionário | Combinar atualizações e remover chaves com Sift.None |
shuffle | Array | Retornar elementos em uma ordem aleatória |
Se você consegue explicar qual valor representa o estado original, qual valor representa o estado retornado e por que Sift.None remove uma chave do dicionário, então entende o fluxo de trabalho principal.
Comparação dos fluxos de trabalho de Luau e roblox-ts
O Sift é compatível tanto com Luau quanto com roblox-ts, mas a experiência de desenvolvimento ao redor é diferente. Usuários de Luau normalmente trabalham diretamente no Roblox Studio ou em um projeto gerenciado pelo Wally. Usuários de roblox-ts escrevem TypeScript e o compilam em código compatível com o Roblox por meio da ferramenta que já utilizam.
A documentação da biblioteca destaca que o Sift usa tipos nativos do Luau e não executa a verificação de tipos em tempo de execução anteriormente associada à abordagem com a dependência antiga. Isso significa que a correção dos tipos continua sendo uma responsabilidade importante do desenvolvedor.
| Fluxo de trabalho | Linguagem | Comando do pacote | Observação sobre tipos |
|---|---|---|---|
| Luau direto | Luau | Wally ou instalação manual | Usa tipos nativos do Luau |
| roblox-ts | TypeScript | npm install @rbxts/sift | Inclui definições de tipos para TypeScript |
| Studio manual | Luau | Biblioteca do Roblox ou cópia de uma release | A estrutura da importação depende da localização |
| Projeto Rojo | Luau ou código gerenciado pelo projeto | Sincronizar o modelo pelo Rojo | Adequado para fluxos com controle de versão |
Escolhendo o melhor ponto de partida
Escolha Luau direto se estiver aprendendo a programar no Roblox ou quiser o caminho mais curto entre o Studio e um exemplo funcional. Escolha roblox-ts se seu projeto já usa TypeScript e npm. Evite mudar de linguagem apenas para usar o Sift; a biblioteca foi projetada para se adaptar a qualquer um dos dois fluxos de trabalho.
Para desenvolvedores Luau, preste atenção à diferença entre orientação estática e comportamento em tempo de execução. Os tipos nativos podem ajudar a descrever os valores esperados, mas dados incorretos ainda podem causar erros em tempo de execução quando as funções recebem entradas inesperadas.
Para desenvolvedores roblox-ts, as definições de tipos podem melhorar o feedback do editor e facilitar a descoberta das APIs. No entanto, o código compilado ainda precisa de testes no nível do projeto, especialmente quando os dados vêm de entradas dos jogadores, dados salvos, rede ou sistemas externos.
Luau primeiro
Melhor para quem está aprendendo no Studio, para pequenos experimentos e para projetos já organizados em torno da programação nativa do Roblox.
roblox-ts primeiro
Melhor para equipes que usam TypeScript, npm e um fluxo de desenvolvimento baseado em compilação.
Mentalidade de migração
Útil ao substituir utilitários antigos baseados no Llama, mas revise as diferenças da API e teste cada atualização de estado.
O Sift não substitui a validação nas fronteiras do sistema. Verifique os dados carregados de salvamentos, recebidos dos clientes ou montados a partir de entradas externas antes de passá-los aos utilitários de coleção.
Erros comuns e checklist de manutenção
Um fluxo de trabalho do Sift adequado para iniciantes depende menos de memorizar todas as funções e mais de manter clara a propriedade dos dados. Decida qual sistema é responsável por um valor, crie um novo resultado para as atualizações e evite misturar padrões mutáveis e imutáveis sem uma razão clara.
Erros comuns
- Editar a tabela original depois de criar um resultado com o Sift: Isso pode dificultar o acompanhamento do histórico do estado.
- Usar uma função de array para dados de dicionário: Selecione a API com base no tipo de coleção, não apenas no resultado desejado.
- Supor que congelar corrige dados inválidos: As funções de congelamento restringem alterações; elas não validam o conteúdo de uma coleção.
- Ignorar estruturas aninhadas: Um congelamento superficial e um congelamento profundo têm efeitos diferentes.
- Atualizar dependências v0.x sem testar: Aumentos na versão menor podem incluir alterações incompatíveis.
- Não documentar o projeto: Registre como o Sift está instalado e qual versão o projeto espera.
| Risco | Por que isso importa | Resposta recomendada |
|---|---|---|
| Os dados originais são modificados | Sistemas posteriores podem receber valores inesperados | Trate os resultados retornados como o próximo estado |
| API de coleção incorreta | A operação pode não corresponder ao formato dos dados | Identifique primeiro se é um array, dicionário ou conjunto |
| Congelamento superficial mal compreendido | Coleções aninhadas podem continuar modificáveis | Use congelamento profundo quando for necessária proteção aninhada |
| Dados inválidos chegam ao Sift | Podem surgir erros em tempo de execução | Valide os dados antes de chamar os utilitários |
| Alteração de versão não rastreada | Uma atualização v0.x pode alterar o comportamento | Fixe e teste a release pretendida |
Checklist do projeto para iniciantes:
- Escolha Luau ou roblox-ts antes de instalar o pacote
- Registre a versão do Sift usada pelo projeto
- Teste uma operação de array, dicionário ou conjunto
- Compare a coleção original com o resultado retornado
- Consulte a documentação oficial do Sift antes de atualizar
Como referência, use a página oficial da documentação do Sift para consultar notas de instalação, orientações sobre a estabilidade do v0.x e os utilitários de coleção disponíveis. Mantenha esse link nas anotações do projeto junto à configuração da dependência.
Ao atualizar o Sift, teste combinações, congelamentos, diferenças e qualquer utilitário usado por dados salvos ou replicados. Testes pequenos e direcionados podem revelar alterações incompatíveis antecipadamente.
Perguntas frequentes do guia para iniciantes de Sift Roblox
Q: Sift Roblox é um jogo jogável do Roblox?
Não. O Sift é uma biblioteca de dados imutáveis para desenvolvimento no Roblox. Ele oferece utilitários para projetos em Luau e roblox-ts, não recursos de gameplay, avatares, códigos ou progressão dentro do jogo.
Q: Como posso instalar o Sift com o Wally?
Adicione o Sift à seção de dependências do wally.toml usando o formato do pacote csqrl/sift, substitua o marcador de versão pela release desejada e execute wally install.
Q: O Sift oferece suporte a roblox-ts?
Sim. A documentação informa que o Sift inclui definições de tipos para TypeScript. O pacote pode ser instalado com npm install @rbxts/sift.
Q: O que Sift.None faz?
No exemplo documentado de combinação de dicionários, Sift.None remove uma chave existente do dicionário resultante. Ele é útil quando uma atualização precisa excluir um valor em vez de substituí-lo.
O Sift é uma opção prática para desenvolvedores que desejam atualizações imutáveis estruturadas em projetos do Roblox. Comece com um tipo de coleção, use o método de instalação que corresponde ao seu fluxo de trabalho e trate as atualizações v0.x como alterações que exigem testes.
O caminho mais confiável para iniciantes é simples: instale o Sift, pratique uma atualização imutável, verifique o resultado e só amplie o uso quando o fluxo de dados estiver claro.