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))
generated by LDoc 1.4.3 Last updated 2018-09-03 17:48:42