Difference between revisions of "Lua"

From TRCCompSci - AQA Computer Science
Jump to: navigation, search
(If Statement)
Line 32: Line 32:
 
=If Statement=
 
=If Statement=
 
<syntaxhighlight lang=lua>
 
<syntaxhighlight lang=lua>
if num > 40 then
+
if num < 40 then
   print('over 40')
+
   print('below 40')
elseif s ~= 'walternate' then   
+
elseif name ~= 'wayne' then   
 
   -- ~= is not equals.
 
   -- ~= is not equals.
 
   -- Equality check is == like Python; ok for strs.
 
   -- Equality check is == like Python; ok for strs.
   io.write('not over 40\n')  -- Defaults to stdout.
+
   io.write('over 40 and Name is wayne\n')  -- Defaults to stdout.
 
else
 
else
  -- Variables are global by default.
+
   print('above 40')
  thisIsGlobal = 5  -- Camel case is common.
 
 
 
  -- How to make a variable local:
 
  local line = io.read()  -- Reads next stdin line.
 
 
 
  -- String concatenation uses the .. operator:
 
   print('Winter is coming, ' .. line)
 
 
end
 
end
 
</syntaxhighlight>
 
</syntaxhighlight>

Revision as of 16:22, 2 June 2019

Comments

-- Two dashes start a one-line comment.

--[[
     Adding two ['s and ]'s makes it a
     multi-line comment.
--]]

Variables

Numbers

num = 42  -- All numbers are doubles.

Strings

s = 'walternate'  -- Immutable strings like Python.
t = "double-quotes are also fine"
u = [[ Double brackets
       start and end
       multi-line strings.]]

Empty / Null

t = nil  -- Undefines t; Lua has garbage collection.

If Statement

if num < 40 then
  print('below 40')
elseif name ~= 'wayne' then  
  -- ~= is not equals.
  -- Equality check is == like Python; ok for strs.
  io.write('over 40 and Name is wayne\n')  -- Defaults to stdout.
else
  print('above 40')
end

-- Undefined variables return nil. -- This is not an error: foo = anUnknownVariable -- Now foo = nil.

aBoolValue = false

-- Only nil and false are falsy; 0 and are true! if not aBoolValue then print('twas false') end

-- 'or' and 'and' are short-circuited. -- This is similar to the a?b:c operator in C/js: ans = aBoolValue and 'yes' or 'no' --> 'no'

Loops

While

-- Blocks are denoted with keywords like do/end:
while num < 50 do
  num = num + 1  -- No ++ or += type operators.
end

For

karlSum = 0
for i = 1, 100 do  -- The range includes both ends.
  karlSum = karlSum + i
end

-- Use "100, 1, -1" as the range to count down:
fredSum = 0
for j = 100, 1, -1 do fredSum = fredSum + j end

-- In general, the range is begin, end[, step].

Repeat / Do While

-- Another loop construct:
repeat
  print('the way of the future')
  num = num - 1
until num == 0