Typy a přetypovávání. Konstanty null a undefined

Proměnná by se dala popsat jako schránka, ve které se ukládají určité hodnoty. Každá proměnná má své pojmenování (název). Máme mnoho druhů proměnných = datové typy. Do proměnné se mohou ukládat čísla, řetězce znaků (textové pole), hodnoty ano/ne a další.

Základní datové typy

Základní dělení datových typů:

textové:

typ String

  • proměnná ukládající „text“
  • řetězcové typy nebo znaky – první znak má pořadí 0
  • může obsahovat textové pole:
  • např „ahoj“

číselné:

typ Number

  • může obsahovat jakékoliv reálné číslo

typ Int

  • datový typ, který může obsahovat pouze celá čísla

typ Uint

  • může obsahovat jen kladná celá čísla

další typy:

typ Boolean

  • obsahuje logické hodnoty true nebo false („ano“ nebo „ne“)

typ pole Array

  • pole objektů (indexovaných vždy od nuly)

typ Button

typ Textfield

typ Sound

typ Loader

typ Sprite

  • podobný jako Movieclip, ale nemá časovou osu, může být pojmenovaný. Dá se užít jako kontejner grafiky.

typ Timer (časovač)

typ XML

Vytvoření (deklarace) instance datového typu

Proměnná se nejprve musí vytvořit (deklarace) – tím se actionscriptu oznámí, že je zde tato proměnná a budeme s ní pracovat a přiřadit jí nějakou hodnotu.

var jménoInstance: jménoDatovéhoTypu; //deklarace proměnné
 
jménoInstance=hodnotaInstance; //přiřazení hodnoty proměnné
 
**např:**
var jmeno:String;
 
jmeno=Karel;

Také můžeme vytvořit proměnnou IHNED při tom jí nastavit hodnotu:

var jménoInstance: jménoDatovéhoTypu = new jménoDatovéhoTypu();  //za rovnítkem je inicializace proměnné(volání konstruktoru)
 
**např:**
var jmeno:String = new Movieclip();

Složitější datové typy

Každý datový typ je v podstatě třídou, která má své metody a položky (proměnné a vlastnosti).

Příkladem takové třídy, která se hojně využívá je MovieClip

Přetypování

Je možné převést jeden datový typ na jiný – např. čísla na text. (Např. pro zobrazení v textovém poli.)

.toString(); převede Number na String .ValueOf(); převede String na Number

příklad:

var cislo:Number=56
text_pole.text = cislo.toString(); //převede Number na String
cislo=text_pole.text.ValueOf(); // převede String na Number

syntaxe přetypování je taková, že uvedeme název typu a závorky, např.

MovieClip(názevProměnné)

Řada tříd má vestavěné metody na přetypování na String: metoda .toString().

Na řetězce se často přetypovává implicitně (tk. automaticky) ve výrazech, kde se očekává výsledek řetězec. Proto např můžeme zobrazit ve funkci trace jejímž parametrem je řetězec i hodnoty numerických proměnných – ty jsou implicitně, bez nutnosti to nějak zvlášť popisovat, převedeny na řetězec.

Tak např. v proměnnou i obsahující hodnotu typu Number úřevedeme na řetězec a spojíme s řetězcem: „hodnota proměnné i =“:

...
i=i+150;
trace("hodnota proměnné i =" +i);  
...

Hodnota Null a undefined

Hodnotu Null má např. proměnná typu funkce, které nebyla přiřazen žádný obsah. Často se to využívá pro událostní funkce – napřonEnterFrame, které přiřadíme tuto hodnotu, když už nechceme aby se dále vykonávala. používá se např. při ošetření toho, když není proměnná dodána – aby nám program nenahlásil chybu. Html a swf

Hodnotu undefined mají proměnné, kterým nebyla přiřazena žádná počáteční hodnota.

Hodnoty undefined je možno testovat v podmínkách, např.

if (i==undefined){
 
   něco dělěj..
}

Zákeřná hodnota NaN -not a number

Výsledkem některých numerických výrazů, kdy např. počítáme s proměnnými, kterým nebyla přiřazena žádná hodnota je hodnota NaN notr a number. Problém je, že se to automaticky neohlásí jako chyba a při testech se to normálně testuje. Tak například někde v programu numerické proměnné „k“ někde v programu přiřadíme obsah proměnné uhelNatoceni, který násobíme pěti. Napíšeme k=uhelNatocení*5 – s dlouhým ína konci! Taková proměnná ale neexistuje a hodnota výrazu uhelNatocení*5 je NaN. V Proměnné k bude uložena zákeřná hodnota NaN. Zákeřná proto, žw n ás na to program neupozorní a někde dále je hodnmota proměnné k testována v nějaké podmínce – testujeme zda k je větší než 1“ Samozřejmě není – (NaN není větší než jedna) – my o tom, že v proměnné je hodnota NaN ale nevíme a program se chvá „divně“.

Proto vždy deklarujemem typy hodnot a pracujeme, jde-li to se třídami. Budeme-li tam třeba chtít použít výraz uhelNatocení*5 s chybným í, program nás n a to upozorní, že proměnná uhelNatocení neexistuje.


Posted

in

by

Tags: