W programowaniu komputerowym cechą jest zbiór metod używanych jako „prosty model konceptualny do tworzenia struktury programów zorientowanych obiektowo”
Typ własny dla cechy A: trait B trait A { this: B => } mówi, że „ Anie można mieszać w konkretną klasę, która również się nie rozszerza B” . Z drugiej strony, następujące: trait B trait A extends B mówi, że „dowolne (konkretne lub abstrakcyjne) mieszanie Abędzie również mieszać …
Jaka jest zaleta korzystania z klasy abstrakcyjnej zamiast cechy (oprócz wydajności)? Wygląda na to, że klasy abstrakcyjne można w większości przypadków zastąpić cechami.
Scenariusz: trait A { function calc($v) { return $v+1; } } class MyClass { use A; function calc($v) { $v++; return A::calc($v); } } print (new MyClass())->calc(2); // should print 4 Ten kod nie działa i nie mogę znaleźć sposobu na wywołanie funkcji cechy, tak jak została odziedziczona. Próbowałem nazywając …
Ostatnio próbuję uczyć się na PHP i odkrywałem, że jestem uzależniony od cech. Rozumiem koncepcję ponownego wykorzystania kodu horyzontalnego i nie chcę dziedziczyć po klasie abstrakcyjnej. Nie rozumiem tylko: jaka jest zasadnicza różnica między używaniem cech a interfejsami? Próbowałem znaleźć porządny post na blogu lub artykuł wyjaśniający, kiedy użyć jednego …
Zapieczętowane klasy są opisane w „Programowaniu w Scali”, ale zapieczętowane cechy nie są. Gdzie mogę znaleźć więcej informacji na temat zapieczętowanej cechy? Chciałbym wiedzieć, czy zapieczętowana cecha jest taka sama jak zapieczętowana klasa? A jeśli nie, jakie są różnice? Kiedy warto zastosować zapieczętowaną cechę (a kiedy nie)?
Cechy w Rust wydają się przynajmniej powierzchownie podobne do typeklas w Haskell, jednak widziałem, jak ludzie piszą, że są między nimi pewne różnice. Zastanawiałem się dokładnie, jakie są te różnice.
W obecnym stanie to pytanie nie pasuje do naszego formatu pytań i odpowiedzi. Oczekujemy, że odpowiedzi będą poparte faktami, referencjami lub ekspertyzą, ale to pytanie prawdopodobnie będzie wymagało debaty, argumentów, ankiet lub rozszerzonej dyskusji. Jeśli uważasz, że to pytanie można poprawić i prawdopodobnie ponownie otworzyć, odwiedź centrum pomocy, aby uzyskać …
Czy biorąc pod uwagę lambdę, można określić typ jej parametru i typ zwracany? Jeśli tak, w jaki sposób? Zasadniczo chcę, aby lambda_traitsmożna było używać na następujące sposoby: auto lambda = [](int i) { return long(i*10); }; lambda_traits<decltype(lambda)>::param_type i; //i should be int lambda_traits<decltype(lambda)>::return_type l; //l should be long Motywacją jest …
Czy bezpieczną praktyką jest używanie metod domyślnych jako wersji cech dla ubogich w Javie 8? Niektórzy twierdzą, że pandy mogą być smutne, jeśli używasz ich tylko ze względu na to, że są fajne, ale nie taki jest mój zamiar. Często przypomina się również, że domyślne metody zostały wprowadzone w celu …
Przeglądałem efektywne slajdy scala i na slajdzie 10 wspomina się, że nigdy nie używaj valich traitjako abstrakcyjnych członków i używaj defzamiast tego. Slajd nie wspomina szczegółowo, dlaczego użycie abstrakcji valw a traitjest anty-wzorcem. Byłbym wdzięczny, gdyby ktoś mógł wyjaśnić najlepsze praktyki dotyczące używania wartości val vs def w cechach metod …
Zastanawiam się, dlaczego PHP Trait (PHP 5.4) nie może implementować interfejsów. Aktualizacja z answer => ... użytkownika1460043 nie może wymagać klasy, która używa jej do implementacji określonego interfejsu Rozumiem, że może to być oczywiste, ponieważ ludzie mogą pomyśleć, że jeśli a Class Aużywa a, Trait Tktóre implementuje an interface I, …
Realizacja std::mem::dropjest udokumentowana następująco: pub fn drop<T>(_x: T) { } Jako taki, oczekiwałbym, że zamknięcie |_| ()(potocznie zwane zamknięciem toalety ) będzie potencjalnym zamiennikiem 1: 1 dropw obu kierunkach. Jednak poniższy kod pokazuje, że dropnie jest zgodny z cechą wyższego rzędu związaną z parametrem funkcji, podczas gdy zamknięcie toalety jest. …
Mam cechę, która ma funkcję deserializacji powiązanego typu. Jednak ten typ skojarzony musi mieć okres istnienia, który decyduje osoba dzwoniąca, więc mam osobną cechę, dla której używam cechy wyższego rzędu, aby można ją było zdezrializować na dowolny okres. Muszę użyć zamknięcia, które zwraca ten skojarzony typ. Mam do tego następujący …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.