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

cookies - Yii2 Advanced - Share session between frontend and mainsite (duplicate of frontend for www) -

angular - password and confirm password field validation angular2 reactive forms -

php - Permission denied. Laravel linux server -