Skalární proměnné
Skaláry obsahují vždy jedinou hodnotu a to buďto řetězec, číslo nebo odkaz na jiná data. Skalár tedy reprezentuje všechny číselné datové typy a to jak celočíselné tak i v pevné i plovoucí čárce, také datové typy znakové a řetězcové.Se skalární proměnou se zachází podle toho, jakým způsobem s ním programátor zachází. Záleží na tedy na operátorech ve výrazu, kde se s proměnnou pracuje. Je tedy možné zacházet s proměnnou jako s číslem a jindy jako s řetězcem bez ohledu na její obsah. Ani v jednom případě nebude kompilátorem zahlášena chyba (konverze z čísla na řetězec a naopak se provádí automaticky bez upozornění). Celou záležitost má v rukou jen a jen programátor. Ten si musí pohlídat, jaká data proměnná obsahuje a k jakému účelu jsou data využívána. Tuto vlastnost by měl mít programátor vždy na paměti. Může to být totiž zdrojem chyb, které nejsou na první pohled patrné a tím pádem těžce odhalitelné.
Při práci s odkazy je také možné použít automatickou konverzi odkazu na číslo nebo řetězec, ale kromě možnosti porovnání hodnoty to nemá smysl. Při použití odkazu jako čísla vede k použití číselné reprezentaci odkazu, čímž získáme několikamístné celé číslo. Pro dva různé odkazy dostaneme dvě různá čísla, ovšem jejich zpětná konverze je nemožná.
Logický typ
V Perlu neexistuje logický datový typ (jako např. Boolean). Pro uchování logické hodnoty lze použít jakýkoliv typ proměnné. Záleží na tom, v jakém kontextu danou proměnnou použijeme. Chceme-li nějakou proměnnou použít pro uchování logické hodnoty, pak se musím řídit pravidly o pravdivosti. Použijeme-li skalár, pro nepravdivou hodnotu do něj uložíme hodnotu nula, prázdný řetězec, řetězec obsahující znak nula nebo nedefinovanou hodnotu. Pravdivá hodnota bude pak všechno ostatní. Chceme-li použít pole pro uchování logické hodnoty, pak jako nepravda bude vyhodnoceno prázdné pole ve skalárním kontextu. V následující tabulce je shrnuto použití skaláru a pole jako logického datového typu.
Definice | Vyhodnocen jako |
---|---|
$x = 1; | $x je pravda |
$x = 0; | $x je nepravda |
$x = '0'; | $x je nepravda |
$x = undef; | $x je nepravda |
@pole = (); | @pole ve skalárním kontextu je nepravda |
@pole = undef; | @pole ve skalárním kontextu je pravda, obsahuje jednu hodnotu |
V dalším díle se podíváme na další skalární datové typy. V případě jakýchkoliv dotazů mě kontaktujte na email: habrman@banan.cz.
Autor: Robert Habrman