Niby proste pytanie ale spędza mi sen z powiek, bo mimo, że przeczytałem już z 300 stron książki o Rust, to ciągle nie mam odpowiedzi na to pytanie.
A mianowicie, w jaki sposób powinienem obsłużyć dublujące się zmienne i funkcje w strukturach? W C++ po prostu utworzyłbym klasę bazową i odziedziczyłbym zmienne oraz funkcje z niej korzystające.
Z tego co wiem to chyba takie podejście jest niemożliwe w Rust. Traits z tego co kojarzę, może jedynie wymuszać implementację funkcji, które nie korzystają z elementów danej klasy.
Oto przykład z duplikacją kodu z którym mam problem(pole messages i funkcja print_message się duplikują): Niby mogę to wlepić do innej klasy i ją wrzucić jako obiekt do bazowej struktury, ale wolałbym coś w stylu dziedziczenia C++
A mianowicie, w jaki sposób powinienem obsłużyć dublujące się zmienne i funkcje w strukturach?
@qarmin: wyekstrahowanie do osobnej struktury? Ten problem wymaga zmiany myślenia, można spokojnie pisać kod bez dziedziczenia (poza oczywiście interfejsami) zarówno w C++ jak i w Ruscie. Dziedziczenie zmiennych to największa zbrodnia popełniona w programowaniu i bardzo dobrze, że tego nie ma w Ruscie
@JakTamCoTam: bo samo dziedziczenie często jest źle używane, a parę lat temu istniała moda na wrzucanie dziedziczenia gdzie popadnie (co zresztą było uczone na studiach), przez to jak przyjdzie ci wejść w stary kod napisany w stylu OOP to tylko płakać. Z polami jest taki problem, że zazwyczaj nie idzie za tym żadna logika i pomysł na modularyzację kodu tylko lenistwo wynikające z braku pomysłu na podzieleniu klasy na mniejsze
@Saly: to dobrze wiedzieć bo teraz siedzę w jednym projekcie gdzie jest mnóstwo dziedziczenia oraz wielodziedziczenia a to moja pierwsza praca i myślałem że po prostu tak wyglądają ogromne systemy xd. A polecilbys jakąś książkę albo kurs w którym można się poduczyć poprawnego projektowania w stylu OOP?
Typek z kanału "Sprawdzam jak" wyjaśniony przez widza za wrzucanie klik-bajtowych miniaturek na swoim live prezentujących zalane miasto (foto w komentarzu) #powodz #sprawdzamjak #wroclaw
Niby proste pytanie ale spędza mi sen z powiek, bo mimo, że przeczytałem już z 300 stron książki o Rust, to ciągle nie mam odpowiedzi na to pytanie.
A mianowicie, w jaki sposób powinienem obsłużyć dublujące się zmienne i funkcje w strukturach?
W C++ po prostu utworzyłbym klasę bazową i odziedziczyłbym zmienne oraz funkcje z niej korzystające.
Z tego co wiem to chyba takie podejście jest niemożliwe w Rust.
Traits z tego co kojarzę, może jedynie wymuszać implementację funkcji, które nie korzystają z elementów danej klasy.
Oto przykład z duplikacją kodu z którym mam problem(pole messages i funkcja print_message się duplikują):
Niby mogę to wlepić do innej klasy i ją wrzucić jako obiekt do bazowej struktury, ale wolałbym coś w stylu dziedziczenia C++
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=69bd793030c5de970f5ecc98755cbca4
#rustlang #programowanie
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=fdf709bcdc62ebe33d24b74a3c95193e
ale niestety w tym przypadku kod jest dłuższy niż bez trait.
Edit: na pierwsze pytanie takie coś używać: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=b866723b448223e6122bb082f8e3e175
@qarmin: wyekstrahowanie do osobnej struktury? Ten problem wymaga zmiany myślenia, można spokojnie pisać kod bez dziedziczenia (poza oczywiście interfejsami) zarówno w C++ jak i w Ruscie. Dziedziczenie zmiennych to największa zbrodnia popełniona w programowaniu i bardzo dobrze, że tego nie ma w Ruscie
A polecilbys jakąś książkę albo kurs w którym można się poduczyć poprawnego projektowania w stylu OOP?