Czyli
a = a.findAny()
?
1!@#$%^&*() języki dynamiczne
Czyli
a = a.findAny()
?
1!@#$%^&*() języki dynamiczne
KamilAdam napisał(a):
Czyli
a = a.findAny()
?
1!@#$%^&*() języki dynamiczne
No nie, patrz:
class PudełkoNaPłyty {
CD cd;
}
Funkcja findAny(pudełko)
to byłoby to samo co pudełko.cd
, czyli po prostu wzięcie atrybutu. Ja chcę mieć funkcje która wyciąga coś (np extract, findAny, get, subset) a potem jeszcze podmienia całą zawartość na to co wyciągnęła.
Najbliżej chyba byl ktoś kto zasugerował (@jurek1980) replaceWithExtracted()
- ale ja to potrzebuję w jednym słowie.
chcesz miec to co w pudełku?
no to flatMap()
nowyworek napisał(a):
chcesz miec to co w pudełku?
no toflatMap()
flatMap()
się woła na kolekcji, a ja to potrzebuję wywołać na jedynm elemencie. Konkretnie tym który chce zmienić, pozostałe mają zostać nieruszone. Poza tym flatMap()
sugeruje dowolną transformację, np mógłbym wyciągnąć z pudełka nie tylko płytkę,ale też instrukcje, paragon, etc.
Ja chcę coś w stylu
replaceByExtracted(pudełko, Cd.class);
Tylko że jednym słowem.
Ok. Czyli chcesz mieć
array[1] = array[1].getValue
Dalej uważam że języki dynamiczne są !@#$%^&*()
take()
zwraca coś zabranego z jakiejś kolekcji, array itd. jednocześnie pomniejsza o zabrany element.
Ewentualnie takeElement()
representant()
KamilAdam napisał(a):
Ok. Czyli chcesz mieć
array[1] = array[1].getValue
No w sumie tak, tylko że to nie musi być array, ani nawet kolekcja. To mogą też np być foldery w systemie plików. Albo cyfry inta, obrazek, etc.
nowyworek napisał(a):
Kilka propozycji:
retain()
@nowyworek Noooooooooooo retain()
mi się mega podoba pod tym względem. Robisz pudełko.retain(cd)
, i zostaje tylko cd :D
Dla mnie retain
nie jest intuicyjne.
Sam wiele razy podkreślałeś, że zależy CI na zmianie elementu. Za to słowniki podają, że retain
oznacza:
utrzymać zatrzymać utrzymywać pozostawić zostawić zachować gromadzić
Więc chyba ta nazwa jednak nie oddaje tego, co chcesz osiągnąć/zrobić.
cerrato napisał(a):
Dla mnie
retain
nie jest intuicyjne.
Sam wiele razy podkreślałeś, że zależy CI na zmianie elementu. Za to słowniki podają, żeretain
oznacza:utrzymać zatrzymać utrzymywać pozostawić zostawić zachować gromadzić
Więc chyba ta nazwa jednak nie oddaje tego, co chcesz osiągnąć/zrobić.
No ja to rozumiałem że jak zrobisz retain()
na CD, to on wyrzuci wszystko, a "zachowa" tylko to CD.
Ale może masz rację.
@TomRiddle: Nie zazdroszczę Twoim kolegom z zespołu podczas code review :D
TomRiddle napisał(a):
Pomoc wizualna #2:
- Są 4y obiekty (pudełka na płytki)
- Wywołuję funkcje na trzecim obiekcie
- Trzeci obiekt (pudełko) jest podmienione jego zawartością (cd)
- Wywołuję funkcję na drugim obiekcie
- Drugi obiekt jest podmieniony przez swoją zwartośc (cd)
extractOne, lub bardziej ogólnie mapOne, transformOne? A może użyjesz jakiejś istniejącej konstrukcji (map, filter) i dodasz na ilu/jakich elementach ma się wykonać (mapIf, mapN)?
iksde napisał(a):
extractOne, lub bardziej ogólnie mapOne, transformOne? A może użyjesz jakiejś istniejącej konstrukcji (map, filter) i dodasz na ilu/jakich elementach ma się wykonać (mapIf, mapN)?
extractOne()
brzmi jak wyciąganie, ale nie jak podmiana całości na wyciągnięty.
mapOne()
, transformOne()
, map()
są zbyt ogólne bo sugerują że można:
filter()
nie pasuje, bo funkcja ma nie dotknąć innych elementów, tylko jeden.
Może takeOnMe()
?
Przynajmniej melodyjne, zwłaszcza w dobrym wykonaniu:
unload
i ogolnie to pytanie nie ma sensu bo chodzi o niszowe zastosowanie "generycznej" nazwy. W takich sytuacjach dopisujesz kontekst i jedziesz.
Kontekst moze byc albo tylko w glowie, albo w slowniku nazewnictwa dla projektu albo w nazwie: "unloadKartonAndThrowAwayIfEmpty".
vpiotr napisał(a):
unload
Load brzmi jak operacje na zasobach, np socketach, plikach, etc. A ta operacja ma być raczej szybką operacją in-memory :D Także load
albo fetch
mi nie pasuje.
i ogolnie to pytanie nie ma sensu bo chodzi o niszowe zastosowanie "generycznej" nazwy. W takich sytuacjach dopisujesz kontekst i jedziesz.
Kontekst moze byc albo tylko w glowie, albo w slowniku nazewnictwa dla projektu albo w nazwie: "unloadKartonAndThrowAwayIfEmpty".
Nie mogę tego zrobić bo:
interface Dupable {}
class A implements Dupable {
Dupable b;
}
class B implements Dupable {}
i zrobić
Dupable x = dupuj(new A(b));
x == b; // wyciągnięto "b" z "a".
Co w sumie wygląda jak odwrotny kompozyt, co wyjaśnia czemu @cerrato zaproponował decompose()
.
@vpiotr I zanim mi powiesz że to zjebany pomysł, bo nie widzisz szerszego kontekstu i nie widziałeś aplikacji którą piszę, proszę zaufaj mi że implementacja jest ok, bo ją akurat przemyślałem wiele razy. Potrzebuję to nazwać tylko dobrze :)
Dalej myślę o drzewach (trzypoziomowe drzewo to dalej drzewo) więc replaceByChild
lub replaceByElement
a może doWhatTomRiddleWant()
:D
KamilAdam napisał(a):
Dalej myślę o drzewach (trzypoziomowe drzewo to dalej drzewo)
A dwupoziomowe? Rozumiem że class A { B field }
to też drzwo?
więc
replaceByChild
lubreplaceByElement
Szukam jednego słowa najlepiej.
Pinek napisał(a):
a może
doWhatTomRiddleWant()
:D
No tak, spodziewałem się że zadawanie pytań o trudną nazwę doprowadzi w końcu do wyśmiewania pomysłu.
Szukam funkcji która (jak ktoś już zaproponował) działa jak flatMap()
, ale nie na wszystkich elementach tylko na jednym, i nie pozwala na mappowanie elementu na inną arbitralną wartość.
TomRiddle napisał(a):
Szukam funkcji która (jak ktoś już zaproponował) działa jak
flatMap()
, ale nie na wszystkich elementach tylko na jednym, i nie pozwala na mappowanie elementu na inną arbitralną wartość.
No z tego opisu, to mi wyszło notFlatMap()
.
somekind napisał(a):
TomRiddle napisał(a):
Szukam funkcji która (jak ktoś już zaproponował) działa jak
flatMap()
, ale nie na wszystkich elementach tylko na jednym, i nie pozwala na mappowanie elementu na inną arbitralną wartość.No z tego opisu, to mi wyszło
notFlatMap()
.
flatElement
lub flatFindFirst
Mi się wydaje, że ten retain to jest to :) Spodobał Ci się.
KamilAdam napisał(a):
somekind napisał(a):
TomRiddle napisał(a):
Szukam funkcji która (jak ktoś już zaproponował) działa jak
flatMap()
, ale nie na wszystkich elementach tylko na jednym, i nie pozwala na mappowanie elementu na inną arbitralną wartość.No z tego opisu, to mi wyszło
notFlatMap()
.
flatElement
lubflatFindFirst
MOże jak nie flat, to bustyElement()
?
A czemu nie możesz po ludzku zrobić to w funkcyjnym stylu i zamiast podmieniać stan obiektu zwrócić nowy?
Dla kolegi pytam.
scibi92 napisał(a):
A czemu nie możesz po ludzku zrobić to w funkcyjnym stylu i zamiast podmieniać stan obiektu zwrócić nowy?
Dla kolegi pytam.
Tak robię, one są immutable.
Nie do końca rozumiem czym jest 'podzbiór' i dlaczego mając do wyboru dwa, preferujesz określony.
np. xxx("dir1/dir2/plik") // jakie ma być zachowanie dla struktury:
dir1/plik1,plik2,plik3
dir1/dir2/plik4,plik5,plik6
Mam wrażenie, że masz drzewo obiektów, wołasz metodę i zwraca Ci węzeł z takiego drzewa wg jakichś bliżej nieokreślonych warunków (accessAny
? ).
@TomRiddle: i jak ją nazwałeś? :D
scibi92 napisał(a):
@TomRiddle: i jak ją nazwałeś? :D
Jeszcze jej nie wdrożyłem, więc nie ma ustalonej nazwy. Zastanawiam się nad tym retain()
albo isolated()
.
Widzę, że fani serialu ciągle czekają na kolejne odcinki. ;)
@TomRiddle - tylko zastanów się, czy ktoś widzący kod po raz pierwszy na oczy, domyśli się po nazwie retain
albo isolated
co dana funkcja robi. Bo jak dla mnie, to te nazwy są równie wiele mówiące, co notHotDog
. ;)