funkcja z argumentem jako obiekt

funkcja z argumentem jako obiekt
SA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 61
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 ? ;)

Kopiuj
 def type(t1: trojkat): Unit = {
}
KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5550
2
Kopiuj
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)

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5550
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
SA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 61
0

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

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

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

Kopiuj
def == (that Shape): Boolean
KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5550
1

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

Kopiuj
case class Triangle extends Shape
case class Square extends Shape

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.