lua - How do I create a function that returns the first non-nil, non-empty string passed to it? -


i'm trying implement function returns first non-blank string variables passed it. unfortunately, of these variables might nil, naive approach

function first_non_empty(...)     i, item in ipairs({...})         if item ~= nil , item ~= ''             return item         end     end     return '' end 

doesn't work: ipairs quits out encounters nil value. can fixed changing requirements variables can't nil, or passing length function table length doesn't have rely on ipairs, or wrapping parameters in function none of them explicitly nil

function first_non_empty_func(...)     i, func in ipairs({...})         local item = func()         if item ~= nil , item ~= ''             return item         end     end     return '' end  function fn(p)     local f = function() return p end     return f end  -- change callers first_non_empty_func(fn(a), fn(b), fn(c)) 

however, both of these solutions complicate function prototype. there exist function taking ordered list of parameters, of may nil, returns first of parameters both non-nil , not empty string?

select('#', ...) can used number of provided arguments, here alternative doesn't use table.pack:

function first_non_empty_pack(...)     = 1, select('#', ...)         local item = select(i, ...)         if item ~= nil , item ~= ''             return item         end     end     return '' end 

Comments

Popular posts from this blog

php - Permission denied. Laravel linux server -

google bigquery - Delta between query execution time and Java query call to finish -

python - Pandas two dataframes multiplication? -