Difference between revisions of "Basic lua: Functions"

From The Official Visionaire Studio: Adventure Game Engine Wiki
(Created page with "Tables are one of the features of Lua script, that make the scripting language so dynamic & easy to use, as they allow us to easily create tables, insert, remove & sort data....")
 
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
Tables are one of the features of Lua script, that make the scripting language so dynamic & easy to use, as they allow us to easily create tables, insert, remove & sort data. Tables are often comprised of arrays that usually involve keywords - or an index number - & a value. Tables can be accessed using multiple different methods.
 
 
{| class="in"
 
{| class="in"
 
|-
 
|-
| class="i_arrow clickablecell" |  [[basic_lua:_Types|<]]
+
| class="i_arrow clickablecell" |  [[basic_lua:_Tables|<]]
 
| class="i_norm clickablecell" | '''[[basic_lua:_Index|Index]]'''
 
| class="i_norm clickablecell" | '''[[basic_lua:_Index|Index]]'''
| class="i_arrow clickablecell" | [[basic_lua:_Functions|>]]
+
| class="i_arrow clickablecell" | [[basic_lua:_Iteration_and_Loops|>]]
 
|}
 
|}
== Creating a function ==
+
<hr>
 +
Functions can be really useful as they let us process/calculate huge amounts of data & return it, also if you include input arguments then they can potentially be reused multiple times over, which can reduce overall workload & increase workflow.
 +
 
 +
== Creating Functions ==
 +
Below I am going to show you how to create your own custom functions.
 +
 
 +
=== Classic Function ===
 +
{| class="ts"
 +
|-
 +
! print hello world! !!
 +
|-
 +
| style="max-width:680px;" | <syntaxhighlight lang="lua">
 +
function hello()
 +
print("hello world!")
 +
end
 +
 
 +
hello()
 +
</syntaxhighlight> || width="180px" style="vertical-align:middle;" | [[File:Basic_lua_(functions)_1.png|frameless|center|180px]]
 +
|}
 +
 
 +
=== Variable as Function ===
 
{| class="ts"
 
{| class="ts"
 
|-
 
|-
! method 1: automatically generated index values !!
+
! print hello world! !!
 
|-
 
|-
 
| style="max-width:680px;" | <syntaxhighlight lang="lua">
 
| style="max-width:680px;" | <syntaxhighlight lang="lua">
local t = {1, 2, 3, 4, 5, "six", 7, "ate", 9} -- automatically assigns an index number to each value starting from 1
+
hello = function()
local str = "" -- empty string
+
print("hello world!")
 +
end
 +
 
 +
hello()
 +
</syntaxhighlight> || width="180px" style="vertical-align:middle;" | [[File:Basic_lua_(functions)_2.png|frameless|center|180px]]
 +
|}
  
for i = 1, #t do -- for 1 to table total, print value of index number
+
=== Function with Input Arguments ===
str = str .. t[i] -- add current table index value to existing text data in the str variable
+
{| class="ts"
if i < #t then str = str .. ", " end -- if i is less than table entry total then insert ", " into the str variable
+
|-
 +
! print 6 !!
 +
|-
 +
| style="max-width:680px;" | <syntaxhighlight lang="lua">
 +
function plus(a, b)
 +
return a + b
 
end
 
end
  
print("table data: " .. str) -- print the table data
+
print( plus(2, 4) )
print( "table entry total: " .. #(t) ) -- print total of table entries
+
</syntaxhighlight> || width="180px" style="vertical-align:middle;" | [[File:Basic_lua_(functions)_3.png|frameless|center|180px]]
</syntaxhighlight> || width="180px" style="vertical-align:middle;" | [[File:Basic_lua_(tables)_1.png|frameless|center|180px]]
 
 
|}
 
|}
  
 +
=== Input Arguments and Fallback ===
 +
{| class="ts"
 +
|-
 +
! print 0.5, 5 !!
 +
|-
 +
| style="max-width:680px;" | <syntaxhighlight lang="lua">
 +
function divideAndConquer(a, b, c)
 +
  c = c or 1 -- if c equals nil then c equals 1
 +
  return (a / b) * c
 +
end
 +
 +
print( divideAndConquer(2, 4) ) -- 2 ÷ 4 x 1 = 0.5
 +
print( divideAndConquer(2, 4, 10) ) -- 2 ÷ 4 x 10 = 5
 +
</syntaxhighlight> || width="180px" style="vertical-align:middle;" | [[File:Basic_lua_(functions)_4.png|frameless|center|180px]]
 +
|}
 +
<hr>
 
{| class="in"
 
{| class="in"
 
|-
 
|-
| class="i_arrow clickablecell" |  [[basic_lua:_Types|<]]
+
| class="i_arrow clickablecell" |  [[basic_lua:_Tables|<]]
 
| class="i_norm clickablecell" | '''[[basic_lua:_Index|Index]]'''
 
| class="i_norm clickablecell" | '''[[basic_lua:_Index|Index]]'''
| class="i_arrow clickablecell" | [[basic_lua:_Functions|>]]
+
| class="i_arrow clickablecell" | [[basic_lua:_Iteration_and_Loops|>]]
 
|}{{toc}}
 
|}{{toc}}

Latest revision as of 16:45, 10 September 2022

< Index >

Functions can be really useful as they let us process/calculate huge amounts of data & return it, also if you include input arguments then they can potentially be reused multiple times over, which can reduce overall workload & increase workflow.

Creating Functions

Below I am going to show you how to create your own custom functions.

Classic Function

print hello world!
function hello()
 print("hello world!")
end

hello()
Basic lua (functions) 1.png

Variable as Function

print hello world!
hello = function()
 print("hello world!")
end

hello()
Basic lua (functions) 2.png

Function with Input Arguments

print 6
function plus(a, b)
 return a + b
end

print( plus(2, 4) )
Basic lua (functions) 3.png

Input Arguments and Fallback

print 0.5, 5
function divideAndConquer(a, b, c)
  c = c or 1 -- if c equals nil then c equals 1
  return (a / b) * c
end

print( divideAndConquer(2, 4) ) -- 2 ÷ 4 x 1 = 0.5
print( divideAndConquer(2, 4, 10) ) -- 2 ÷ 4 x 10 = 5
Basic lua (functions) 4.png

< Index >