- Why does Lua keep popping in so many random places? - You're probably taking this course because of some application you care about - neovim, Wow Modding, Factorio soul stealing, etc. - Lua probably is a means to an end - but if you'll allow me a quick explanation, it will greatly help your Lua learning and get you back to doing whatever you were originally trying to do. - Seven types (type(...)) - Only false and nil are falsey values - Scoping / block rules - Locality and variable shadowing - Do blocks - How does “require” work? - package.\* as well - String / Table single argument functions - Optional args - Keyword args - Variable args - Important builtin functions - `select` - `ipairs` - `pairs` - These probably should be later, after discussing metatables: - `rawset` - `rawget` - Defining custom iterators for for loops - Coroutines in general - Coroutines don’t require any new language features, just introduces a new language mechanism - Re-uses existing module structure as well as functions and type information - Standard library examples? - Constructing your own standard library of common utilities - Debug library usage and information So cool that metatables and environments are also just tables Weak tables Fun stuff to implement in Lua: - Default dictionary - Readonly dictionary Stuff to consider: - Bringing up some differences in lua versions? References: - [http://thomaslauer.com/download/luarefv51.pdf](http://thomaslauer.com/download/luarefv51.pdf) - [https://www.lua.org/manual/5.1/manual.html\#5.3](https://www.lua.org/manual/5.1/manual.html\#5.3)