Jak nazwać funkcję podmieniającą całość na podzbiór?

0

Szukam generycznej nazwy funkcji, która brałaby jakąś całość, i zwracała podzbior/child/element/mniejszą część tej całości.

Np:

  • Funkcja podmieniająca cały film video na pojedynczą klatkę.
  • Funkcja podmieniająca cały post na jedno zdanie.
  • Funkcja podmieniająca słowo na jedną litere.
  • Funkcja podmieniająca całą scenę 3d na jeden obiekt
  • Funkcja podmieniająca folder hello/ (w którym jest plik file.txt), na plik hello.txt.
  • Funkcja podmieniająca plik archive.zip (którym jest folder siemka/foo/bar/), na folder archive/foo/bar/
  • Funkcja podmieniająca obrazek 100x100 pikseli, na jego podzbiór, czyli na np wycięcie 50x50 pikseli od 20x30 left/top.
  • Funkcja podmieniająca int a = 123; na podzbiór, czyli na int a = 2;
  • Funckja podmieniająca całą farmę na jedno zwierze.

Coś odwrotnego jak "building". Nazwa funkcji powinna dawać do zrozumienia że funkcja bierze jakąś całość, i zostawia (i.e. usuwa wszystko oprócz) jakiejś jednej części/elementu.

2

Normalnie nazywa się to filter albo reduce w zależności od tego co robisz ;] W twoim przypadku brzmi to bardziej jak tworzenie tzw klas równoważności więc equivalence class

4

Przy takim opisie to i map by pasował (projekcja po polsku).

0
Afish napisał(a):

Przy takim opisie to i map by pasował (projekcja po polsku).

.map() sugeruje że może zamienić wszystko na wszystko, przeprowadzić transformacje, etc.

A intencja funkcji którą próbuję stworzyć jest taka że ma "zamienić coś na jego mniejszą część", "wyciągnąć mniejszą część z czegoś".

Shalom napisał(a):

Normalnie nazywa się to filter

Filter brzmi jak wzięcie A[] (o rozmiarze np 6), i wyplucie A[] (tylko o rozmiarze np 4).

albo reduce w zależności od tego co robisz ;]

Czyli...

reduce("/folder") // "hello.txt"

?

Może by i mogło być, gdybym nie znalazł nic innego, tylko problem jest taki. Tylko że reduce z reguły bierze "całą całość", np array, i pozwala wziąć wszystkie elementy pod uwagę przy podmiance. Ja chcę/potrzebuje tylko jeden. Np chciałbym podmienić cały folder jednym plikiem, a nie kilkoma.

W twoim przypadku brzmi to bardziej jak tworzenie tzw klas równoważności więc equivalence class

I wydaje mi się. Może rozwiń?

1

Może "crop"?

1

Coś odwrotnego jak "building"

To może decompose?

1

Jeśli ma zwracać tylko jeden element to może findFirst lub findAny, albo stare dobre get

2

ExtractSubelement / PickSubelement?

3

Funkcja podmieniająca

Jeśli ta funkcja ma zmieniać, a nie zwracać to jednak na pewno użyłbym replace w nazwie. Zaproponowane raczej zwracają element ale nie manipulują na oryginale.
Może coś w stylu replaceByfiltered()

0
yarel napisał(a):

Może "crop"?

crop("folder/"); // folder.txt

? No może by było.

cerrato napisał(a):

Coś odwrotnego jak "building"

To może decompose?

Brzmi jak usunięcie czegoś, trochę jak "dispose".

KamilAdam napisał(a):

Jeśli ma zwracać tylko jeden element to może findFirst lub findAny, albo stare dobre get

findFirst("folder/") // plik.txt
findAny("folder/") // plik.txt

? No nie wiem.

3
TomRiddle napisał(a):
KamilAdam napisał(a):

Jeśli ma zwracać tylko jeden element to może findFirst lub findAny, albo stare dobre get

findFirst("folder/") // plik.txt
findAny("folder/") // plik.txt

? No nie wiem.

To opisz problem dokładniej bo findAny robi dokładnie to co opisałeś. Zwraca jeden, dowolny element z kolekcji (zbioru, listy)

Java 8 Stream findFirst() vs. findAny()

1
TomRiddle napisał(a):
cerrato napisał(a):

Coś odwrotnego jak "building"

To może decompose?

Brzmi jak usunięcie czegoś, trochę jak "dispose".

Niekoniecznie. Dla mnie dispose dany obiekt powinno skasować, zaorać, zniszczyć, a decompose rozłożyć na jakieś elementy składowe. Ale jeśli ten pomysł Ci się nie podoba, to co powiesz o dismount?

3

Obawiam się, że @TomRiddle podszedł do tematu zbyt generycznie. Chce, żeby nazwa funkcji dobrze opisywała co robi i jednocześnie była bardzo uniwersalna.

0
maszrum napisał(a):

ExtractSubelement / PickSubelement?

Nie pasuje mi pick().

pick("/base/folder/"); // /base/plik.txt

Za to extract() mi się bardziej podoba! Serio! Tylko extract brzmi jak taka funkcja która nie ma side-effectów, jakby brała i wyciągała. A ja potrzebuje taką która faktycznie robi extract i też podmienia całość tym extract()em :D

Take coś jak extractAndInsert() tylko jednym słowem.

6

nazwa funkcji dobrze opisywała co robi i jednocześnie była bardzo uniwersalna

To może justDoIt(); :D

0
KamilAdam napisał(a):
TomRiddle napisał(a):
KamilAdam napisał(a):

Jeśli ma zwracać tylko jeden element to może findFirst lub findAny, albo stare dobre get

findFirst("folder/") // plik.txt
findAny("folder/") // plik.txt

? No nie wiem.

To opisz problem dokładniej bo findAny robi dokładnie to co opisałeś. Zwraca jeden, dowolny element z kolekcji (zbioru, listy)

Java 8 Stream findFirst() vs. findAny()

Ale nie podmienia całości na jego wynik.

0
maszrum napisał(a):

Obawiam się, że @TomRiddle podszedł do tematu zbyt generycznie. Chce, żeby nazwa funkcji dobrze opisywała co robi i jednocześnie była bardzo uniwersalna.

To żeby była "jednocześnie była bardzo uniwersalna" zostaw mnie ;D Temat jest odnośnie nazwy.

Funkcja ma robić takie coś:

  1. Weź całość
  2. Wyciągnij coś z całości (podoba mi się extract(), mniej findFirst())
  3. Podmień całą całość na wynik poprzedniej operacji.
1

Oryginał obiektu/pliku/kolekcji itd. jest niszczony czy nie? Ciągle używasz polskiego podmień.
replaceByExtracted()

0
jurek1980 napisał(a):

Oryginał obiektu/pliku/kolekcji itd. jest niszczony czy nie? Ciągle używasz polskiego podmień.

Oryginał jest nieruszony.

replaceByExtracted()

Wolałbym jedno słowo. Funkcja która ma 3 słowa nie brzmi jak "bardzo generyczna".

2

Może coś z użyciem słowa sample np getSample() czy coś? Skoro jesli dobrze rozumiem, ta funkcja ma wziąć "jakiś kawałek" z całości

1

Kilka propozycji:
retain()
firstOrNull()
extractOne()

0

Zakoduj używając każdej z propozycji powyżej.
Przy refaktoringu ustal którą wersję wolisz.

Potem resztę wywal.

0
Pinek napisał(a):

Może coś z użyciem słowa sample np getSample() czy coś? Skoro jesli dobrze rozumiem, ta funkcja ma wziąć "jakiś kawałek" z całości

Dobrze kombinujesz, tylko "sample" brzmi trochę jak losowa/arbitralna część. Nie taka która jest zamierzona.

nowyworek napisał(a):

a moze po prostu subset()?

Brzmi jak tylko wyciągnie, czyli "extract", "find any". A ona jeszcze podmienić całość na tą część.

vpiotr napisał(a):

Zakoduj używając każdej z propozycji powyżej.
Przy refaktoringu ustal którą wersję wolisz.

Potem resztę wywal.

Funkcja już istnieje dawno. Zrobiłem dokładnie tak jak mówisz, i nie mogłem zdecydować, więc zapytałem forum.

1

getAndReplace()

0
TomRiddle napisał(a):
Pinek napisał(a):

Może coś z użyciem słowa sample np getSample() czy coś? Skoro jesli dobrze rozumiem, ta funkcja ma wziąć "jakiś kawałek" z całości

Dobrze kombinujesz, tylko "sample" brzmi trochę jak losowa/arbitralna część. Nie taka która jest zamierzona.

To może representativeSample? :) https://www.investopedia.com/terms/r/representative-sample.asp

0
Pinek napisał(a):
TomRiddle napisał(a):
Pinek napisał(a):

Może coś z użyciem słowa sample np getSample() czy coś? Skoro jesli dobrze rozumiem, ta funkcja ma wziąć "jakiś kawałek" z całości

Dobrze kombinujesz, tylko "sample" brzmi trochę jak losowa/arbitralna część. Nie taka która jest zamierzona.

To może representativeSample? :) https://www.investopedia.com/terms/r/representative-sample.asp

Próbka reprezentatywna też może być losowa :D

1

ifPresentReplaceOrlElseThrow()

1

Czy możesz podać sygnaturę tej funkcji, jakie argumenty, co zwraca? (mam wrażenie, że się to w toku dyskusji zmienia).

2

Ok, widzę że odpowiadający zaczynają tracić wiarę w zasadność mojego pytania i sugerują kalambury, więc zamiast mówić językiem programistów, posłuże się pomocą zdjęciową, w nadziei że zwizualizuje ona to co ta funkcja ma robić.

funkcja.juice.jpg

Wyjaśnienie:

  • Najpierw są jakieś dwie całości
  • Wywołuję funkcję na pierszym obiekcie
  • I cały obiekt (paczka) zostaje podmieniony jego zawartością (karton soku)
0

Pomoc wizualna #2:

funkcja.cd.jpg

  • 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)

1 użytkowników online, w tym zalogowanych: 0, gości: 1