Class std.container
Container prototype.
A container is a std.object with no methods. It's functionality is instead defined by its metamethods.
Where an Object uses the __index
metatable entry to hold object
methods, a Container stores its contents using __index
, preventing
it from having methods in there too.
Although there are no actual methods, Containers are free to use
metamethods (__index
, __sub
, etc) and, like Objects, can supply
module functions by listing them in _functions
. Also, since a
std.container is a std.object, it can be passed to the
std.object module functions, or anywhere else a std.object is
expected.
When making your own prototypes, derive from std.container if you want
to access the contents of your objects with the []
operator, or from
std.object if you want to access the functionality of your objects with
named object methods.
Prototype Chain
table `-> Object `-> Container
Objects
std.container.Container | Container prototype. |
Objects
- std.container.Container
-
Container prototype.
Container also inherits all the fields and methods from std.object.Object.
Fields:
- _type string object name (default "Container")
See also:
Usage:
local std = require "std" local Container = std.container {} local Graph = Container { _type = "Graph", _functions = { nodes = function (graph) local n = 0 for _ in std.pairs (graph) do n = n + 1 end return n end, }, } local g = Graph { "node1", "node2" } --> 2 print (Graph.nodes (g))