Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
28
Rozdział2.Elementarz
Zwróćuwagę,żewartościżadnychdwóchzwymienionychpowyżejtypówda-
nychniepokrywająsięzesobą.Oznaczato,żedowolnawartośćniesiezasobą
jednoznacznąinformacjęoswoimtypie.Możemysięotymprzekonać,korzystając
zwbudowanejwLuafunkcji
type
.Zkażdymwywołaniemzwracaonaciągznaków
reprezentującytypdanychprzekazanychdoniejjakoargument.
TrybinteraktywnyLua5.3
>print(type(nil))
nil
>print(type(12),type("12"))
number
string
>print(type(true),type("true"))
booleanstring
>print(type(false),type(301415))
booleannumber
>print(type(type(nil)))
string
Zauważ,że
12
i
"12"
todwieróżnewartości.Pierwszareprezentujeliczbęrówną
tuzinowi,drugazaściągznakówzbudowanyzdwóchsymboli:jedynkiidwójki.
Podobniezresztą
true
i
"true"
wartościamiróżnychtypów-odpowiednio
wartościąlogicznąiciągiemznaków.Wostatnimprzykładziewypisujemytypwarto-
ścizwracanejprzezfunkcję
type
.Tazaśjestzawszeciągiemznaków-niezależnie
odtego,zjakimargumentemwywołamy.
Pozaczterematypamipodstawowymi,Luaudostępniaczterytypyobiektowe:
function
,
table
,
thread
oraz
userdata
.onezwiązanezrozbudowanymi
strukturami,równieżtymireprezentującymidaneskładającesięzinstrukcjiiwielu
wartościróżnychtypów.
Wartościtypu
function
topoprostufunkcje.Każdaznich,jakociąguniwer-
salnychinstrukcji,doktórychmożemysiępóźniejodwoływać,jestprzechowywana
wpamięcijakowartośćtypu
function
.Wartościtypu
table
(nazywanetabelami)
workami,wktórychmożemyprzechowywaćwieleopisanychetykietamiwarto-
ścidowolnychtypów
.Wartościtypu
thread
związanezewspółprogramami
wykonywanymiprzezprogramnapisanywjęzykuLua
.Wkońcu,wartościtypu
userdata
obejmująwszystkoto,coniemieścisięwżadnymzsiedmiupozostałych
typów.Wpraktycetobinarnedanetworzoneiinterpretowaneprzezbiblioteki
napisanewjęzykuc.Chociażtypy
thread
i
userdata
wyjątkowointeresujące,
4
Stosującdosyćhermetycznyjęzyktechniczny,powiedzielibyśmy,żetobliscykrewniheterogenicz-
nychtablicasocjacyjnychznanychzinnychjęzykówprogramowania.
5
Mówiącbardzoogólnie,współprogramy(coroutines)pozwalająwyodrębnićwprogramieniezależne
odsiebie,aleściślewspółpracującezesobączęści.Tworzenie,anawetrozumienieideiwspółprogra-
mówniestetyznaczącowykraczapozazakrestejksiążki.Wspominamonichzresztąjeszczenakońcu
tejczęści,wrozdzialept.nCzegonieznajdzieszwtejksiążce”
.