2017-10-10 5 views
0

i ont le code dans mon fichier lua et je modifier que pour ressembler à cecifonction d'appel en fonction dans Lua

function getUserinfo(user_id) 
    function call_back_user_info(status , result) 
    t = {["first_name"]= result.first_name_, ['have_access']= result.have_access_, ["last_name"]=result.last_name_,["user_name"]=result.username_} 
    return t 
    end 
    getUser(user_id,call_back_user_info) 
    end 

je dois retourner t valeur de la table quand je l'appelle GetUserInfo function.but il me obtenir un valeur nulle! note: fonction getUser met des données dans call_back_user_info

comment je peux résoudre ce problème? merci

+0

Vous devez 'return' l'appel' getUser'. – luther

+0

Pas une solution, mais il semblerait plus simple si 'getUser' vient de renvoyer la liste' status, result'. Donc, 'return call_back_user_info (getUser (user_id))' ou 'local status, result = getUser (user_id)' .... –

Répondre

1

Vous ne pouvez pas faire un "long return" qui revient d'une fonction externe de l'intérieur d'une fonction interne.

Mais ce que vous pouvez faire est de créer une variable locale qui est fermée sur, comme ceci:

function getUserinfo(user_id) 
    local t 

    function call_back_user_info(status , result) 
    t = {["first_name"]= result.first_name_, 
     ['have_access']= result.have_access_, 
     ["last_name"]=result.last_name_, 
     ["user_name"]=result.username_} 
    end 

    getUser(user_id,call_back_user_info) 

    return t 
end 
+0

"long' return' "est un jeu intéressant sur le saut en longueur et al, mais, en tant que concept importé, il ne fonctionne pas tout à fait - ce qui est bien sûr ce que vous dites. Les fonctions Lua sont des valeurs et peuvent donc être appelées dans n'importe quel contexte. Un appel à la fonction "interne" n'est pas nécessairement à l'intérieur d'un appel à la fonction "externe". Et, dans le code de la question, il est apparemment à l'intérieur d'un appel à 'getUser' qui est dans l'appel de' getUserinfo'. –