Spotkałem coś takiego w projekcie open source. Metody modyfikujące atrybuty instancji zwracają odwołanie do instancji. Jaki jest cel tego konstruktu? class Foo(object): def __init__(self): self.myattr = 0 def bar(self): self.myattr += 1 return
Spotkałem coś takiego w projekcie open source. Metody modyfikujące atrybuty instancji zwracają odwołanie do instancji. Jaki jest cel tego konstruktu? class Foo(object): def __init__(self): self.myattr = 0 def bar(self): self.myattr += 1 return
Podczas korzystania z metody łączenia, takiej jak: var car = new Car().OfBrand(Brand.Ford).OfModel(12345).PaintedIn(Color.Silver).Create(); mogą być dwa podejścia: Ponownie użyj tego samego obiektu, jak poniżej: public Car PaintedIn(Color color) { this.Color = color; return this; } Utwórz...
Często używam wzorca, w którym używam łączenia łańcuchowego do ustawiania obiektu, podobnego do wzoru Builderlub Prototype, ale nie tworzę nowych obiektów przy każdym wywołaniu metody, zamiast tego modyfikując oryginalny obiekt. Przykład: new Menu().withItem("Eggs").withItem("Hash...
Mam trochę dyskusji z przyjacielem, czy te dwie praktyki są tylko dwiema stronami tej samej monety, czy też jedna z nich jest naprawdę lepsza. Mamy funkcję, która pobiera parametr, wypełnia jego element członkowski, a następnie zwraca go: Item predictPrice(Item item) Uważam, że ponieważ działa...
Ostatnio bawiłem się z Ruby i zastanawiałem się, czy w czysto obiektowych językach (a nawet tych, które nie są czyste) tworzenie metod, które przyjmują tylko jeden parametr, a następnie łączą się, jest równoważne curry w językach z funkcjonalnym styl? Jeśli nie, dlaczego nie? Byłbym wdzięczny za...
Właśnie znalazłem tę funkcję w projekcie, nad którym pracuję: -- Just returns the text unchanged. -- Note: <text> may be nil, function must return nil in that case! function Widget:wtr(text) return text end Szkoda, że programista nie działa już w firmie. Dlaczego mielibyśmy tworzyć...
Niedawno zasugerowałem metodę łączenia dla pewnej klasy w pewnym projekcie, aby poprawić czytelność kodu. Dostałem odpowiedź „płynne interfejsy nie powinny być implementowane tylko dla wygody, ale dla semantyki” i kazałem zrzucić moją sugestię. Odpowiedziałem, że nie sugeruję płynnego interfejsu,...
Mam klasy, która ma trzy metody A(), B()i C(). Te metody modyfikują własną instancję. Podczas gdy metody muszą zwracać instancję, gdy instancja jest osobną kopią (tak jak Clone()), mam wolny wybór do zwrócenia voidlub tej samej instancji ( return this;) podczas modyfikowania tej samej instancji w...