estudando lua: valores reais

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

estudando lua: valores reais

fecik
print(_VERSION)
--> Lua 5.3

local ok,err=pcall( function() assert(false,1) end )
print(type(err))
--> string :(

local ok,err=pcall( function() error(2) end )
print(type(err))
--> string :(

local ok,err=pcall(function() assert(false,{codigo=3}) end)
print(type(err))
--> table :D ^^ \o/

local ok,err=pcall(function() error({codigo=4}) end)
print(type(err))
--> table :D ^^ \o/

--[[
 Por que no final nao temos o valor real?
 Assim como fazem os iteradores, etc...
 Pois as vezes queremos pegar o erro e usar o valor real.

 E permanecer os casos especiais com os "ja string".
 E permanecer o erro causado quando o interpretador
 pega o erro e nao consegue gerar uma string de erro.
--]]

------------------------------------------------------
------------------------------------------------------

print(_VERSION)
--> Lua 5.3

print( ('A'):match('.') )
--> A

print( ({'A','B'}):concat() )
--> attempt to call method 'concat' (a nil value)

--[[
 Por que nao transformar certas funcoes de table
 em estilo-orientado-a-objeto, como eh com string?
 (seguindo a ideia dos tipos basicos)
--]]

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: estudando lua: valores reais

Alex Queiroz
On 06/04/16 15:33, fecik wrote:
>
> --[[
>  Por que nao transformar certas funcoes de table
>  em estilo-orientado-a-objeto, como eh com string?
>  (seguindo a ideia dos tipos basicos)
> --]]
>

Todas as strings compartilham a mesma metatable. Cada tabela pode ter
uma metatable individual, caso uma seja criada.

--
-alex
http://unendli.ch/

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Visite este grupo em https://groups.google.com/group/lua-br.
Para obter mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: estudando lua: valores reais

Roberto Ierusalimschy
In reply to this post by fecik
> local ok,err=pcall( function() assert(false,1) end )
> print(type(err))
> --> string :(
>
> [...]
>
> --[[
>  Por que no final nao temos o valor real?
>  Assim como fazem os iteradores, etc...
>  Pois as vezes queremos pegar o erro e usar o valor real.
>
>  E permanecer os casos especiais com os "ja string".
>  E permanecer o erro causado quando o interpretador
>  pega o erro e nao consegue gerar uma string de erro.
> --]]

Acho que há um bug aí. A função 'error' está transformando o número
em string, o que não deveria ocorrer. Na verdade, acho que o bug é
mais embaixo: lua_isstring está fazendo essa conversão, indevidamente...

-- Roberto

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Visite este grupo em https://groups.google.com/group/lua-br.
Para obter mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: estudando lua: valores reais

Roberto Ierusalimschy
> > --[[
> >  Por que no final nao temos o valor real?
> >  Assim como fazem os iteradores, etc...
> >  Pois as vezes queremos pegar o erro e usar o valor real.
> >
> >  E permanecer os casos especiais com os "ja string".
> >  E permanecer o erro causado quando o interpretador
> >  pega o erro e nao consegue gerar uma string de erro.
> > --]]
>
> Acho que há um bug aí. A função 'error' está transformando o número
> em string, o que não deveria ocorrer. Na verdade, acho que o bug é
> mais embaixo: lua_isstring está fazendo essa conversão, indevidamente...

Desculpem, acho que falei bobagem. Tenho que ver mais atentamente
o que está ocorrendo. (De qualquer forma, o valor final do erro
devia mesmo ser um número.)

-- Roberto

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Visite este grupo em https://groups.google.com/group/lua-br.
Para obter mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: estudando lua: valores reais

Denis Dos Santos Silva
In reply to this post by fecik
Talvez possa ajudar:
funções ala 'iterators, maps, ...' --> http://mirven.github.io/underscore.lua/
tipo um 'coffescritpt' --> http://moonscript.org/

Vale lembrar que Lua não tem suporte 'nativo' a OO, mas, provê meios 'parecidos' para isso.

Lua é uma VM (ambiente) e linguagem de programação de script com tipagem fraca. Interpretada 'direta' (up down - não sei se existe um termo próprio para isso)



Em quarta-feira, 6 de abril de 2016 10:50:10 UTC-3, fecik escreveu:
print(_VERSION)
--> Lua 5.3

local ok,err=pcall( function() assert(false,1) end )
print(type(err))
--> string :(

local ok,err=pcall( function() error(2) end )
print(type(err))
--> string :(

local ok,err=pcall(function() assert(false,{codigo=3}) end)
print(type(err))
--> table :D ^^ \o/

local ok,err=pcall(function() error({codigo=4}) end)
print(type(err))
--> table :D ^^ \o/

--[[
 Por que no final nao temos o valor real?
 Assim como fazem os iteradores, etc...
 Pois as vezes queremos pegar o erro e usar o valor real.

 E permanecer os casos especiais com os "ja string".
 E permanecer o erro causado quando o interpretador
 pega o erro e nao consegue gerar uma string de erro.
--]]

------------------------------------------------------
------------------------------------------------------

print(_VERSION)
--> Lua 5.3

print( ('A'):match('.') )
--> A

print( ({'A','B'}):concat() )
--> attempt to call method 'concat' (a nil value)

--[[
 Por que nao transformar certas funcoes de table
 em estilo-orientado-a-objeto, como eh com string?
 (seguindo a ideia dos tipos basicos)
--]]

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: estudando lua: valores reais

fecik
In reply to this post by Roberto Ierusalimschy
quick@quick-C ~/Downloads $ lua -v teste.lua
Lua 5.3.2  Copyright (C) 1994-2015 Lua.org, PUC-Rio
string
string
table
table
quick@quick-C ~/Downloads $ ./lua-5.2.4/src/lua -v teste.lua
Lua 5.2.4  Copyright (C) 1994-2015 Lua.org, PUC-Rio
string
string
string
table
quick@quick-C ~/Downloads $

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: estudando lua: valores reais

Denis Dos Santos Silva
In reply to this post by fecik
--- fonte
$ cat teste.lua
print(_VERSION)

print('primeira parte');

local ok,err=pcall( function() assert(false,1) end )
print(type(err))

local ok,err=pcall( function() error(2) end )
print(type(err))

local ok,err=pcall(function() assert(false,{codigo=3}) end)
print(type(err))

local ok,err=pcall(function() error({codigo=4}) end)
print(type(err))

print('segunda parte');
print( ('A'):match('.') )
print( ({'A','B'}):concat() )



--- output
$ lua teste.lua
Lua 5.1
primeira parte
string
string
string
table
segunda parte
A
lua: teste.lua:19: attempt to call method 'concat' (a nil value)
stack traceback:
        teste.lua:19: in main chunk
        [C]: ?


Em quarta-feira, 6 de abril de 2016 10:50:10 UTC-3, fecik escreveu:
print(_VERSION)
--> Lua 5.3

local ok,err=pcall( function() assert(false,1) end )
print(type(err))
--> string :(

local ok,err=pcall( function() error(2) end )
print(type(err))
--> string :(

local ok,err=pcall(function() assert(false,{codigo=3}) end)
print(type(err))
--> table :D ^^ \o/

local ok,err=pcall(function() error({codigo=4}) end)
print(type(err))
--> table :D ^^ \o/

--[[
 Por que no final nao temos o valor real?
 Assim como fazem os iteradores, etc...
 Pois as vezes queremos pegar o erro e usar o valor real.

 E permanecer os casos especiais com os "ja string".
 E permanecer o erro causado quando o interpretador
 pega o erro e nao consegue gerar uma string de erro.
--]]

------------------------------------------------------
------------------------------------------------------

print(_VERSION)
--> Lua 5.3

print( ('A'):match('.') )
--> A

print( ({'A','B'}):concat() )
--> attempt to call method 'concat' (a nil value)

--[[
 Por que nao transformar certas funcoes de table
 em estilo-orientado-a-objeto, como eh com string?
 (seguindo a ideia dos tipos basicos)
--]]

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: estudando lua: valores reais

fecik
In reply to this post by Denis Dos Santos Silva
valeu,
Alex e Dennis

"Por que table nao tem estilo-orientado-a-objeto, como eh em string?"
  COMO ENTENDI:
    String simboliza 1 soh coisa.
      As funcoes sobre ela tem o mesmo alvo. Pode generalizar.
    Mas table simboliza "sequencia,conjunto,registro,pilha..."(PeL3ed)
      Generalizar poderia nos fazer crer que funciona para todas.
    TABELADEQUETIPO:concat() --errado
    table.concat(TABELATIPOLISTA) --certo

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: estudando lua: valores reais

Denis Dos Santos Silva
In reply to this post by fecik
é isso aí.
realmente as operações com tabelas regulares tem que serem feitas usando table.funcao (tabela, parametros)
já com string tem um comportamento diferente.


Em quarta-feira, 6 de abril de 2016 10:50:10 UTC-3, fecik escreveu:
print(_VERSION)
--> Lua 5.3

local ok,err=pcall( function() assert(false,1) end )
print(type(err))
--> string :(

local ok,err=pcall( function() error(2) end )
print(type(err))
--> string :(

local ok,err=pcall(function() assert(false,{codigo=3}) end)
print(type(err))
--> table :D ^^ \o/

local ok,err=pcall(function() error({codigo=4}) end)
print(type(err))
--> table :D ^^ \o/

--[[
 Por que no final nao temos o valor real?
 Assim como fazem os iteradores, etc...
 Pois as vezes queremos pegar o erro e usar o valor real.

 E permanecer os casos especiais com os "ja string".
 E permanecer o erro causado quando o interpretador
 pega o erro e nao consegue gerar uma string de erro.
--]]

------------------------------------------------------
------------------------------------------------------

print(_VERSION)
--> Lua 5.3

print( ('A'):match('.') )
--> A

print( ({'A','B'}):concat() )
--> attempt to call method 'concat' (a nil value)

--[[
 Por que nao transformar certas funcoes de table
 em estilo-orientado-a-objeto, como eh com string?
 (seguindo a ideia dos tipos basicos)
--]]

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.