Logo

Programming-Idioms

This language bar is your friend. Select your favorite languages!
  • Lua

Idiom #223 for else loop

Loop through list items checking a condition. Do something else if no matches are found.

A typical use case is looping through a series of containers looking for one that matches a condition. If found, an item is inserted; otherwise, a new container is created.

These are mostly used as an inner nested loop, and in a location where refactoring inner logic into a separate function reduces clarity.

local function list_cond(t,cond)
 for _,v in ipairs(t) do
  if cond(v)==true then return true end
 end
 return false
end
if list_cond(items,function(x) return x==0 end) then
 print("did find 0")
else
 print("didn't find 0")
end
(if (seq (filter odd? my-col))
  "contains odds"
  "no odds found")

(seq (filter pred-fn col)) returns nil when there are no matches, and nil is falsy.

New implementation...
< >
Ruien