Pravdivostní hodnoty a typy

Kromě čísel a textů má Lua ještě jeden jednoduchý druh hodnot: pravdivostní hodnotu (anglicky boolean, podle matematika George Boolea). Ta má jen dvě možné hodnoty, true (pravda) a false (nepravda). Je to odpověď na otázku ano, nebo ne: Prší? Je stodola otevřená?

local prsi = false
local stodolaOtevrena = true
print(prsi)
print("Stodola otevřená:", stodolaOtevrena)

Vypíše:

false
Stodola otevřená:	true

V příští lekci budou pravdivostní hodnoty rozhodovat, co program udělá, třeba jestli Ema bude zalévat pole. Zatím si dejte pozor na tři věci:

  • true a false jsou klíčová slova, a proto se píšou bez uvozovek. "true" v uvozovkách je text, který jen vypadá jako pravdivostní hodnota.
  • Píšou se malými písmeny. True s velkým písmenem je jen název, a protože žádná proměnná True neexistuje, je jeho hodnota nil.
  • Stejně jako nil nejde pravdivostní hodnota připojit k textu pomocí ..: "Prší: " .. prsi skončí chybou attempt to concatenate a boolean value (local 'prsi'). Vypište ji s čárkou, nebo ji nejdřív převeďte na text, jak se naučíte v příštím cvičení.

Každá hodnota má svůj typ: číslo, text, pravdivostní hodnota… Funkce type vám řekne který, a to jako text:

print(type(120))
print(type(2.5))
print(type("Ema"))
print(type(true))
print(type(nil))

Vypíše:

number
number
string
boolean
nil

type vrátí number pro celá i desetinná čísla stejně; od sebe je rozlišíte pomocí math.type. Později v kurzu poznáte další typy, například table (tabulka) a function (funkce; zkuste print(type(print))).

V Lua patří typ hodnotě, ne proměnné. Stejná proměnná může teď obsahovat číslo a později text:

local uroda = 12
print(type(uroda))
uroda = "dvanáct"
print(type(uroda))

Vypíše:

number
string

Lua to dovolí, ale každého, kdo bude program číst, to zmate. Do každé proměnné ukládejte jen jeden druh hodnot.

Pokyny

Pod to vypište proměnnou mleko a její typ stejně jako na dvou řádcích nad tím:

Ema	string
1	number
6.5	number

Stejně vypište stodolaOtevrena a její typ. Objeví se string: hodnota je v uvozovkách, takže je to text. Opravte řádek 5 tak, aby stodolaOtevrena byla pravdivostní hodnota a program vypsal:

Ema	string
1	number
6.5	number
false	boolean

kravy i mleko jsou čísla. Na poslední řádek vypište, jakého druhu je každé z nich: math.type(kravy) a math.type(mleko), oddělené čárkou:

Ema	string
1	number
6.5	number
false	boolean
integer	float

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

7/10