Difference between revisions of "Variant"

(Clarified restrictions for usage of tables as Variant)
 
(12 intermediate revisions by 9 users not shown)
Line 1: Line 1:
Value is not a Lua type, just represents all of type like [[string]], [[number]], [[boolean]], LÖVE object, or [[table]].
+
The [[Variant]] type is not a real lua type, but instead indicates what lua values LÖVE can store internally. It is used in [[love.thread]] and [[love.event]]. Indeed, as it is a "virtual" type, it has no specific representation in lua, and no methods.
 +
 
 +
== Types ==
 +
A [[Variant]] can be a [[table]], a [[boolean]], a [[string]], a [[number]] or LÖVE [[Object]]s.
 +
 
 +
== Notes ==
 +
* Foreign userdata (Lua's files, LuaSocket, ENet, ...), functions and <code>nil</code> are not supported.
 +
 
 +
* There are various restrictions on using tables for Variant:
 +
** Values within a table are also subject to the Variant rules (i.e. must only contain Variant types).
 +
** Tables will lose their metatables when used as a Variant.
 +
** Prior to [[11.0]] nested tables are not officially supported.
 +
** Nested tables cannot have cyclical references
 +
 
 +
== See Also ==
 +
* [[parent::love]]
 +
[[Category:Types]]
 +
{{#set:Description=The types supported by [[love.thread]] and [[love.event]].}}
 +
{{#set:Since=000}}
  
In [[Thread]](or [[Channel]]), The value is boolean, string, number, LÖVE userdata, or a simple flat table. Foreign userdata (Lua's files, LuaSocket, ENet, ...), functions, and tables inside tables are not supported.
 
 
== Other Languages ==
 
== Other Languages ==
{{i18n|value}}
+
{{i18n|Variant}}

Latest revision as of 21:59, 22 June 2024

The Variant type is not a real lua type, but instead indicates what lua values LÖVE can store internally. It is used in love.thread and love.event. Indeed, as it is a "virtual" type, it has no specific representation in lua, and no methods.

Types

A Variant can be a table, a boolean, a string, a number or LÖVE Objects.

Notes

  • Foreign userdata (Lua's files, LuaSocket, ENet, ...), functions and nil are not supported.
  • There are various restrictions on using tables for Variant:
    • Values within a table are also subject to the Variant rules (i.e. must only contain Variant types).
    • Tables will lose their metatables when used as a Variant.
    • Prior to 11.0 nested tables are not officially supported.
    • Nested tables cannot have cyclical references

See Also


Other Languages