Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 01/02/23 em todas áreas

  1. Algumas funções Lua

    Rodrigo94 reagiu a WooX por uma resposta no tópico

    1 ponto
    Biblioteca de funções Lua Eu me recordo que alguns anos atrás quando iniciei meus estudos em Lua, a biblioteca de funções postada pelo @xWhiteWolf me ajudou muito com a escrita de alguns scripts, me fez economizar tempo e algumas linhas de código. Ter uma biblioteca de funções uteis é uma mão na roda para qualquer desenvolvedor pois poupa tempo que teria de ser gasto desenvolvendo algo que algum outro programador provavelmente já fez. Pensando nisso, hoje eu decidi trazer algumas funções Lua, tenho certeza que poderá ser útil pra alguém algum dia. Algumas dessas funções foram feitas por mim, outras por amigos meus e algumas eu já nem lembro mais onde encontrei. Irei postar aqui o conteúdo desta biblioteca porem ela também estará no final do tópico como anexo. As funções que me recordo a origem estará com os créditos do autor. Lib Explicação das funções: Por enquanto é isso... pretendo atualizar este tópico sempre que achar necessidade de escrever algo novo ou encontrar algo que possa ser útil a biblioteca. 090-woox_functions.lua
  2. Dicas essenciais em Lua

    DiigooMix reagiu a Ryzor por uma resposta no tópico

    1 ponto
    Muita gente andou me pedindo para que eu desse algumas dicas com Lua. Então, resolvi por meio dessa aula, dar dicas gerais de toda a linguagem. Esse tutorial tem como objetivo apenas salientar alguns macetes e dicas legais para Lua tendo em vista que exista um mínimo conhecimento do assunto. Não responderei perguntas que julgo idiotas, portanto, nem tentem poluir esse tópico, se não sabe o que é Lua, procure no Google que é o melhor que você pode fazer. Desde já, desculpo me por minha antipatia por parte dos ignorantes. Comentários Além dos conhecidos comentários de linhas únicas iniciados por "-- comments go here" existem comentários de bloco, isto é, de multi linhas, representados por "--[[ comments go here]]". Variáveis Variáveis como o próprio nome já diz não são constantes, ou seja, o programador pode livremente mudar seus valores Variáveis naturalmente são globais, mas podem se tornar locais colocando se antes do início da declaração "local" O escopo de uma variável é limitada para o escopo atual e seus escopos-filhos Não é recomendado debugar códigos usando variáveis locais pois estas são guardadas no stack e por isso é necessário funções como "assert" e outras Uma variável local com mesmo nome de uma variável global apenas substitui o valor da global temporariamente (geralmente no tempo de sua execução, o que não chega a ser problema na maioria dos casos) Tipos Nil Um valor especial que tem valor vazio e significa nulo (NULL) Variáveis que são declaradas sem valor possuem valor igual a "nil" e podem ser modificadas livremente Na maioria dos casos "nil" é retornado quando uma função falha É possível usar uma alternativa ao "nil" usando "or" já que "nil" leva ao booleano "false": print(tonumber("a"), tonumber("a") or 1) -> prints "nil 1" Boolean Pode ter dois valores, true ou false. "Nil" funciona como false mas o número 0 funciona como true. Isso é bastante confundido por muitos Number Todos os números em Lua são valores "double float" Variáveis podem ser convertidas em números pela função tonumber(var) que retorna "nil" caso falhe Funções de manipulação de números são encontradas na biblioteca de matemática do Lua (math) Strings Strings podem receber os mesmos escapes da linguagem C (\n, \t, \0, etc) Strings são internamente encriptadas pelo Lua, isso quer dizer que existe apenas uma única cópia de uma string em particular não importa quantas variáveis referem a essa string Declarações que contam espaços em branco ou mesmo indicações de pular de linha e uso de tabulação podem ser pegos de forma mais dinâmica usando: string = [[Aqui eu escrevo sem me preocupar com nada e nem mesmo aspas, veja só: ' ""'"''" "]] Strings podem ser concadenadas usando o operador ".." Se existem muitas strings para serem concadenadas, o melhor jeito é inserir estas em uma tabela (usando table.insert()) e concadená-las (usando table.concat()) Variáveis podem ser convertidas em strings usando tostring(var) que retorna "nil" caso falhe Tables Tabelas podem ser indexadas por números, variáveis, funções, outras tabelas, funções, entre outros Atribuindo um valor a um campo da tabela que não existe automaticamente cria esse campo Ao invés de se usar a função table.getn(table) é possível pegar o número de elementos de uma tabela usando #table onde table é o nume da tabela Não confunda table.getn(table) com table.maxn(table). Enquanto a primeira função retorna o número de elementos contido na tabela, o segundo retorna o maior valor numérico contido na tabela e retorna "nil" caso seja uma tabela formada por strings apenas Ao contrário de outras linguagens, o número correspondente ao primeiro valor não é 0 e sim o valor 1 É possível remover valores e elementos de uma função atribuindo-lhes o valor "nil" A tabela global se chama "_G" e você pode vê-la assim como as demais tabelas usando (k = key, v = value): for k, v in pairs(_G) do print(k, v) end Userdatas Userdatas são ponteiros do C/C++ que indicam objetos que não podem ser utilizados em Lua Uma "metatable" pode ser um "userdata" para funcionar como uma tabela ou ser chamada como função, operadores próprios, entre outros Functions Uma função pode retornar múltiplos valores e podem ser atribuídas a várias variáveis Funções podem ser colocadas em tabelas Valores passados por funções são locais a não ser que sejam tabelas ou userdatas. Isso dá a oportunidade de modificar tabelas dentro de funções Funções auxiliares (ou temporárias) podem ser criadas dentro de funções como locais Switch Muita gente me pergunta se existe uma função "switch" para case statements em Lua, a resposta é não. Mas, o uso de tabelas em funções podem simular esse efeito, veja: Código: switch = {} switch[1] = function() print("Olá a todos") end switch[2] = function() print("Meu nome é Yuji") end -- ... if (switch[1]) then switch[1]() -- executa a função que diz "Olá a todos" end Loops No loop "repeat .. until (bool)" não existe o "continue" pois o Lua automaticamente cuida disso. Apesar disso, existe o "break". No loop "for ... do" existe um atribuito após o último valor para poder incrementar a variável assim como no PHP e C++ Mais dicas ainda estão por vir.
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo