{"id":24901863,"url":"https://github.com/jonatasperaza/mylua","last_synced_at":"2025-03-27T18:20:20.977Z","repository":{"id":232733192,"uuid":"785055490","full_name":"jonatasperaza/MyLua","owner":"jonatasperaza","description":"Minha experiencia com Lua","archived":false,"fork":false,"pushed_at":"2024-04-14T04:21:13.000Z","size":5,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-01T21:18:00.462Z","etag":null,"topics":["javascript","language","lua","programming"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonatasperaza.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-04-11T05:22:02.000Z","updated_at":"2024-04-11T05:27:01.000Z","dependencies_parsed_at":"2024-04-11T06:43:52.195Z","dependency_job_id":null,"html_url":"https://github.com/jonatasperaza/MyLua","commit_stats":null,"previous_names":["jonatasperaza/mylua"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonatasperaza%2FMyLua","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonatasperaza%2FMyLua/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonatasperaza%2FMyLua/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonatasperaza%2FMyLua/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonatasperaza","download_url":"https://codeload.github.com/jonatasperaza/MyLua/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245898314,"owners_count":20690466,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javascript","language","lua","programming"],"created_at":"2025-02-01T21:18:08.642Z","updated_at":"2025-03-27T18:20:20.952Z","avatar_url":"https://github.com/jonatasperaza.png","language":"Lua","readme":"\u003cimg width=100% src=\"https://capsule-render.vercel.app/api?type=waving\u0026color=e83d84\u0026height=120\u0026section=header\"/\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/jonatasperaza\"\u003e\u003cimg title=\"Author\" src=\"https://img.shields.io/badge/Author-JonatasPeraza-e83d84.svg?style=for-the-badge\u0026logo=github\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# Guia Completo da Linguagem Lua Simplificada\n\nEste guia oferece um mergulho profundo na linguagem de programação Lua, apresentada de maneira simplificada e utilizando o JavaScript como referência. Se você já tem familiaridade com JavaScript, encontrará este documento uma forma rápida de aprender Lua, destacando semelhanças e diferenças chave entre as duas linguagens.\n\n## Índice\n\n- [Introdução](#introdução)\n- [Variáveis e Tipos de Dados](#variáveis-e-tipos-de-dados)\n- [Estruturas de Controle](#estruturas-de-controle)\n- [Funções](#funções)\n- [Tabelas](#tabelas)\n- [Metatables e Metamethods](#metatables-e-metamethods)\n- [Módulos e Pacotes](#módulos-e-pacotes)\n- [Manipulação de Strings](#manipulação-de-strings)\n- [Trabalhando com Arquivos](#trabalhando-com-arquivos)\n- [Conclusão](#conclusão)\n\n## Introdução\n\nLua é uma linguagem de programação poderosa, leve e embutível, amplamente utilizada em desenvolvimento de jogos, scripts para aplicações de servidor e clientes, e em sistemas embarcados. Uma de suas características marcantes é a simplicidade sintática, o que a torna acessível para iniciantes, ao mesmo tempo que oferece flexibilidade para programadores experientes.\n\nPara entender Lua através do JavaScript, começamos pela definição de variáveis.\n\n## Variáveis e Tipos de Dados\n\nEm Lua, as variáveis são implicitamente globais se não forem explicitamente declaradas como locais. A comparação direta seria:\n\n```lua\n-- Lua\nlocal x = 10 -- similar a 'const' ou 'let' em JavaScript\n```\n```javascript\n//javascript\nconst x = 10; // Declaração de uma constante\nlet y = 20; // Declaração de uma variável que pode ser reatribuída\n```\nTipos de dados básicos em Lua incluem nil, boolean, number, string, function, userdata, thread, e table. A table em Lua é especialmente notável, pois serve como a principal estrutura de dados, similar a objetos em JavaScript, podendo representar arrays, dicionários, e muito mais.\n\n## Estruturas de Controle\n\nAs estruturas de controle em Lua são semelhantes às de JavaScript, com algumas diferenças na sintaxe.\n\n### Condicional If\n\n\nLua:\n```lua\nif a \u003e b then\n    print(\"a é maior que b\")\nelseif a \u003c b then\n    print(\"a é menor que b\")\nelse\n    print(\"a é igual a b\")\nend\n```\n\nJavascript:\n\n```javascript\nif (a \u003e b) {\n    console.log(\"a é maior que b\");\n} else if (a \u003c b) {\n    console.log(\"a é menor que b\");\n} else {\n    console.log(\"a é igual a b\");\n}\n```\n\n### Loops\n\nLua:\n```lua\n-- For numérico\nfor i = 1, 5 do\n    print(i)\nend\n\n-- While\nlocal i = 1\nwhile i \u003c= 5 do\n    print(i)\n    i = i + 1\nend\n```\n\nJavascript:\n```javascript\n// For\nfor (let i = 1; i \u003c= 5; i++) {\n    console.log(i);\n}\n\n// While\nlet i = 1;\nwhile (i \u003c= 5) {\n    console.log(i);\n    i++;\n}\n```\n\n## Funções\n\nLua e JavaScript compartilham conceitos similares de funções, incluindo funções anônimas e closures.\n\nLua:\n```lua\nfunction somar(a, b)\n    return a + b\nend\n\nlocal multiplicar = function(a, b)\n    return a * b\nend\n```\n\nJavaScript:\n```javascript\nfunction somar(a, b) {\n    return a + b;\n}\n\nconst multiplicar = function(a, b) {\n    return a * b;\n};\n```\n\n## Tabelas\nA table em Lua é uma estrutura de dados poderosa, que pode funcionar como um array, um dicionário, ou ambos.\n\nLua:\n```lua\nlocal frutas = {\"maçã\", \"banana\", \"cereja\"}\nprint(frutas[1]) -- Lua é baseada em índice 1\n\nlocal carro = {marca = \"Ford\", modelo = \"Mustang\", ano = 1969}\nprint(carro.modelo)\n```\nJavascript:\n```javascript\nlet frutas = [\"maçã\", \"banana\", \"cereja\"];\nconsole.log(frutas[0]); // JavaScript é baseado em índice 0\n\nlet carro = {marca: \"Ford\", modelo: \"Mustang\", ano: 1969};\nconsole.log(carro.modelo);\n```\n\n\n## Metatables e Metamethods\n\nLua oferece metatables para modificar o comportamento de tabelas, incluindo operações como adição, subtração e concatenação. Isso é similar, em alguns aspectos, aos Proxies em JavaScript.\n\n## Módulos e Pacotes\n\nLua utiliza um sistema de módulos para organizar código em bibliotecas reutilizáveis. JavaScript faz algo similar com módulos ES6.\n\n## Manipulação de Strings\n\nTanto Lua quanto JavaScript oferecem uma ampla gama de funções para manipulação de strings, embora com diferenças sintáticas.\n\n## Trabalhando com Arquivos\n\nLua e JavaScript podem ler e escrever arquivos, mas enquanto JavaScript tipicamente faz isso no lado do servidor (com Node.js), Lua pode fazer tanto em aplicações de servidor quanto em scripts embutidos em outras aplicações.\n\n## Conclusão\n\nLua é uma linguagem de programação versátil com uma sintaxe simples e uma estrutura poderosa. Para desenvolvedores com experiência em JavaScript, aprender Lua pode ser uma transição suave, aproveitando o conhecimento existente enquanto explora os recursos únicos que Lua tem a oferecer. Este guia fornece um ponto de partida, mas a prática e a exploração contínuas são essenciais para dominar qualquer linguagem de programação.\n\n\u003cp align=\"center\"\u003e \n\u003ca href=\"https://github.com/jonatasperaza \" \u003e\u003cimg alt=\"GitHub\" src=\"https://img.shields.io/badge/jonatasperaza%20-%23121011.svg?\u0026style=for-the-badge\u0026logo=github\u0026logoColor=white\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cimg style=\"margin-top:10px\" width=100% src=\"https://capsule-render.vercel.app/api?type=waving\u0026color=e83d84\u0026height=120\u0026section=footer\"/\u003e","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonatasperaza%2Fmylua","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonatasperaza%2Fmylua","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonatasperaza%2Fmylua/lists"}