Coding for KidsCoding for Kids
Kreatív SzintekKihívásokTanári Útmutató
Szavazzon a funkciókra
Fejlett Python fejlesztési tanfolyam
Fejezet
>
Szint

Dekorátorok
Dekorátorok láncolása

Célkitűzés

Díszítsd a tetőt színes zászlókkal dekorátorok láncolásával.

A tetőn jól jön egy kis friss levegő, miután ennyi ideig bezárva maradt a konyhában, egyes sorokból hiányoznak a zászlók. Jó ötlet lenne őket felállítani, miközben itt vagy, bár ez nem egyszerű, mivel többféle zászlóra van szükség a sor kialakításához.

Ezt dekorátorok láncolásával érheted el.

A dekorátorokat úgy láncoljuk, hogy megduplázzuk az @ jeleket, azaz egyetlen függvényhez több dekorátort is rögzítünk. Például ez lehetővé teszi, hogy egy függvényt két dekorátorfüggvény közé helyezzünk:

# List to add flags to a line line = [] # Decorator adding a red flag def red_flag(func): def add_flag(): line.append("red") player.speak("Two red flags added to the line") func() line.append("red") return add_flag # Decorator adding a blue flag def blue_flag(func): def add_flag(): line.append("blue") player.speak("Two blue flags added to the line") func() line.append("blue") return add_flag # Decorated Function adding line and middle flag @blue_flag @red_flag def middle_green(): line.append("green") player.speak("A green flag has been added to the line")

A fenti kód egy olyan függvényt illusztrál, amelyhez láncolt dekorátorok vannak csatolva; ezek a dekorátorok úgy vannak beépítve a függvénybe, hogy a sor szélén kék zászlókat helyez el, a belső rétegen piros zászlókat, végül pedig a közepén egy zöld zászlót. Mindegyikhez hozzáadódik a line nevű listához, ez a módszer, amellyel a sorokra felállítjuk a zászlókat.

Kezdj a arany X jelzés felé sétálva, és használd a read() függvényt, hogy ellenőrizd a táblán feltüntetett utasításokat. Itt megtudhatod, hova melyik zászlót kell elhelyezned, hiszen három (3) különböző színű zászló van: "red", "green" és "blue". Minden sorban mindhárom zászló szerepelni fog: egy (1) a sor közepén, kettő (2) a belső részen, és kettő (2) a külső részen, összesen öt (5) zászlóval, hasonlóan a térkép alsó bal oldalán található előre elkészített sorhoz.

Sétálj a világos X jelzés felé, és használd a collect() függvényt, hogy összegyűjtsd a ládában lévő "flags" zászlókat. Ezt követően sétálj a sötét X jelzések felé, és balról jobbra kezdd el elhelyezni a zászlókat abban a sorrendben, ahogy az előbb elolvasott utasításokban szerepelt. Ehhez használd a középső függvényeket, például: a middle_green() ilyen zászlósort hoz létre: ["blue", "red", "green" ,"red","blue" ]. Ezután használd a place() függvényt a line lista felhasználásával a sor elhelyezéséhez, így: place(line).

Minden X jelzés között töröld a line listát a clear() függvény használatával, így: line.clear(), ez lehetővé teszi, hogy újrahasználd a listát anélkül, hogy minden sorhoz újat kellene készítened. A jobb oldali utolsó X jelzésnél egy egyedi függvény szükséges:

@ @ def middle_custom(): line.append( Insert append ) player.speak("%s flag has been added to the line" % ( insert flag ))

Használd a két @ jelet a dekorátorok hozzáadásához a függvényhez, majd töltsd ki a sorhoz hozzáfűzendő elemet és a zászló színét a szövegben. Ezt tedd az előzőleg elolvasott utasításoknak megfelelően a szint teljesítéséhez.

Kódkönyv