MI-PSL-4 Flashcards
- Which kind of template definitions exist?
Class definice a Object definice (stejne)
Trait definice
- Where may template definition occur?
Jako top-level výraz (top-level statement)
Uvnitř jiného templatu (template statement)
Uvnitř funkce (block statement)
- What are the main parts of a template?
tpltype extends earlydefs constr with mt1 with … with mtn {
stats
}
tpltype – typ template:
[case|abstract] class c [tps] as m (ps1)…(psn)
c – jméno třídy
tps – typové parametry
as – anotace primárního konstruktoru
m – modifikátor viditelnosti primárního konstruktoru (např. private nebo protected)
ps1…psn – seznamy formálních parametrů primárního konstruktoru
object o
trait t [tps]
t – jméno traitu
tps – typové parametry
earlydefs - definice, které se vyhodnotí před voláním konstruktoru rodiče
constr - konstruktor super třídy (v případě traitu nemůže mít parametry)
mt1 .. mtn - seznam traitů
stats - tělo templatu, definice a deklarace členský proměnných, funkcí, …
- Which parts of a template can be omitted?
V podstatě všechny části, template může být např jen class Point
- How differs trait and class list of parents?
Předkům traitu se nepředávají parametry konstruktoru, protože trait se inicializuje až poté, co byli inicializováni všichni rodiče.
- What happened when a list of parents within the template is omitted?
U tříd je doplněno extends AnyRef.
Pokud je uveden nějaký trait jako with trait mt1 a mt1 dědí od třídy class1, je definice přepsána na extends class1 with trait mt1.
- What is the mixin-evaluation and how it is performed?
Postup inicializace tříd
Pro traity - vyhodnotí se tělo traitu Pro třídy : Konstruktor nadtřídy je vyhodnocen Všechny base třídy v linerizaci templatu až k nadtřídě templatu jsou mixin-evaulated vyhodnotí se tělo třídy
- What contains a template body?
Sekvenci výrazů daného templatu. Může specifikovat self type. Může obsahovat:
Importy
definici a deklaraci členských proměnných, funkcí, ..
Sekvenci výrazů, které jsou vyhodnocovány v pořadí v jakém jsou napsány
- What elements can be class members?
proměnné - var values - val funkce - def typy - types templaty - object, class, trait
- What is it declaration and what elements can be declared?
abstraktní popis memberů a přiřazení jejich typů
Deklarované můžou být: var, val, def, type
val x
def m (a : Int) : Boolean
- What is it definition and what elements can be defined?
konkrétní definice nadeklarovaných memberů Definovaný můžou být všichni co můžou být deklarovaný val x = 42 def m (a : Int) : Boolean = if a
- What is it constant value definition?
Proměnná označená klíčovým slovem final.
final val x = expr
expr je konstantní výraz, který je přiřazen do proměnné x. S proměnnou x je poté také zacházeno jako s konstantou.
- What is it uniform access?
K metodám bez parametrů i proměnným se dá přistupovat jednotným způsobem. Toto je umožněno kvuli jednoduché záměně proměnné za metodu v definici templatu bez nutnosti upravovat klientský kod.
- What is equivalent to the following field declaration: var x : T?
def x : T def x_= ( y : T ): Unit
- How can be expressed the var definition with the default initial value?
var x : T = _