diff --git a/compendium/modules/w05-classes-exercise.tex b/compendium/modules/w05-classes-exercise.tex index 3c9e86679..774d142e3 100644 --- a/compendium/modules/w05-classes-exercise.tex +++ b/compendium/modules/w05-classes-exercise.tex @@ -295,6 +295,7 @@ scala> p.moved(0,1) val res1: blockbattle.Pos = Pos(1,3) \end{REPL} +Testa även att anropa \code{moved} på klassnamnet, t.ex. \code{Pos.moved(0,1)}. Fungerar detta? Varför/varför inte? Hur skiljer sig anrop till metoder i singelobjekt respektive klassinstanser? \Subtask Under laborationen är det smidigt att kunna representera vilka tangenter som motsvarar de olika riktningar som en användare kan styra sin mullvad i. Gör klart case-klassen \code{KeyControl} enligt nedan så att den fungerar enligt efterföljande REPL-tester. Metoden \code{direction} ska ge ett delta-steg i rätt \code{(x, y)}-riktning för ett givet tangentnamn. Metoden \code{has} ska ge \code{true} om tangentnamnet finns i någon av de fyra riktningstangenterna i denna denna \code{KeyControl}-instans, annars \code{false}. \scalainputlisting[basicstyle=\ttfamily\fontsize{10}{12}\selectfont]{../workspace/w06_blockbattle/KeyControl.scala} @@ -444,6 +445,8 @@ \TaskSolved \what Denna uppgift är laborationsförberedelse. Utvärdera dina lösningar genom egna tester i REPL. +\SubtaskSolved Det går inte att anropa \code{Pos.moved(0,1)}. Anledningen till detta är att \code{moved} inte existerar i kompanjonsobjektet \code{Pos}, därav felmeddelandet ''value \code{moved} is not a member of object \code{Pos}''. För att anropa en metod definierad inuti en klass måste man göra anropet på en instans av klassen. + \QUESTEND