funkcja z argumentem jako obiekt

0

Czesc,
potrzebuje pomysl na funkcje ktora przyjmuje obiekty roznych klas, ma ktos pomysl jak to uogolnic ? np type() mogla przyjmowac tez obiekt klasy kwadrat, doradzi cos ktos ? ;)

 def type(t1: trojkat): Unit = {
}
2
trait Shape

class Triangle extends Shape
class Square extends Shape

def `type`(t1: Shape): Unit

Hasło brzmi: Polimorfizm i implementacja interfejsów
Chociaż w przypadku Scali są to cechy (ang. traits)

1

a co w sytuacji gdy chce w funkcji type(t1: Shape, t2: Shape) porownac t1 == t2, bo gdy w przekazuje t1 = new Triangle i w Triangle mam def == ale ta funkcja nie zostaje wtedy uzyta uzyta

  1. Odpowiadaj w postach
  2. Sygnatury wszystkich metod których chcesz użyć powinny być w Shape
  3. Tylko że pewnie nie chcesz definiować == a equals które jest używane przez ==.
  4. Jeśli potrzebujesz porównywać obiekty za pomocą == to możliwe że potrzebujesz CASE CLASSES
0

uzywam traits i wszystko sprawdza sie super jedynie nie moge rozw tego problemu z porownaniem np w klasie Triangle extends Shape

    def == (that Triangle): Boolean ={
         side == that.side

ale chcialbym zrobic override def ==
tylko sygnatura == w Shape nie pasuje tu

def == (that Shape): Boolean
1

Zamień klasy na klasy przypadków i dostaniesz implementacje == za darmo
czyli:

case class Triangle extends Shape
case class Square extends Shape

1 użytkowników online, w tym zalogowanych: 0, gości: 1