2013-05-16 4 views
-3

Voici du code Lua que je viens d'écrire dans SCIte, et je ne sais pas exactement ce qui ne va pas, alors quelqu'un pourrait-il m'expliquer ce que j'ai fait de mal et comment y remédier?Pouvez-vous s'il vous plaît me dire ce qui ne va pas avec ce code?

t = setmetatable({},{ 
__newindex = function(t, key) 
if key == false then 
    return("False cannot exist in table") 
    key = nil 
    end 
if key == __string then 
    table.concat[table, key] 
else 
    table[key] = nil 
    end 
if key == nil then 
    return "Tables in this file cannot contain false values." 
end 
} 
) 

function Error() 
    _,cError = pcall(__index) 
end 
function Call1() 
    error("error in metatable function, '__index'", 1) 
end 
function Call2() 
    Call1() 
end 

Error() 

Call2() 
+3

De quelle façon vous savez qu'il est " faux"? Ne fait-il pas ce que tu veux? Recevez-vous un message d'erreur en essayant simplement de le compiler? –

+0

@DavidGelhar Oui, cela provoque un message d'erreur. – AugustusCeasar12

Répondre

0

Il y a beaucoup de choses qui ne vont pas, tellement il est presque impossible de les modifier. Cependant ces correctifs peuvent vous aider, j'ai essayé de fixer votre fonction ici en fonction de ce que vous aviez avant. Je vous suggère d'en apprendre plus sur la langue avant d'essayer de créer des classes avec des métabalises.

t = setmetatable({},{ 
    __newindex = function(t, key) 
     if key == false then 
      return("False cannot exist in table") -- return values in this function don't make sense 
      --key = nil THIS WILL NEVER BE REACHER 
     end 
     if type(key) == "string" then --check key is a string 
      table[key] = {} 
     else 
      table[key] = nil 
     end 
     if key == nil then 
      return "Tables in this file cannot contain false values." 
     end 
    end 
    } 
) 

De plus

function Call1() 
    error("error in metatable function, '__index'", 1) 
end 

est absurde, il sera toujours sortie une erreur, à savoir:

error("No error here") 

va produire

lua: ex.lua:26: No error here 
+0

Merci pour votre contribution, je suis assez nouveau dans la langue, et la programmation en général. Bon à savoir, il y a un endroit où je peux demander des critiques productives et des solutions de base. – AugustusCeasar12

+0

@AugustusCeasar heureux de savoir que cela a aidé. Ça va prendre du temps pour ramasser les choses. N'hésitez pas à poser vos questions sur SO. :) – HennyH

+0

'__newindex' a 3 paramètres d'entrée (t, k, v), la valeur de retour de' __newindex' n'a aucun sens. –

Questions connexes