Thread View: pl.comp.lang.java
5 messages
5 total messages
Started by Borneq
Fri, 17 Jul 2015 16:11
Zwracanie dwóch (kilku) rzeczy przez metodę
Author: Borneq
Date: Fri, 17 Jul 2015 16:11
Date: Fri, 17 Jul 2015 16:11
13 lines
1506 bytes
1506 bytes
W C++ mam referencję, w zwykłym C jako parametr podaję wskaźnik np na
inta, który używam *ptr = value.
W Javie nie ma wskaźników ani zwracanie wyników przez wartość, referencję.
Mam kawałek kodu w C, który to robi. Metodą, która jest najbardziej
podobna do kodu oryginału jest przydzielenie pamięci na tablicę jednego
inta, i wypełnienie tab[0] = value.
W Javie nie zdecydowano się na przekazywanie wyników przez wartość,
pewnie uważano to za nieeleganckie.
Dlaczego również nie zwraca kilku wartości jak np.
(int,int) func() {
return (1,2);
}
Jakie są inne możliwości? Ustawianie pola w obiekcie?
Re: Zwracanie dwóch (kilku) rzeczy przez metodę
Author: Borneq
Date: Fri, 17 Jul 2015 16:16
Date: Fri, 17 Jul 2015 16:16
5 lines
1120 bytes
1120 bytes
W dniu 2015-07-17 o 18:11, Borneq pisze: > Jakie są inne możliwości? Ustawianie pola w obiekcie? Może jest zasada, że funkcja powinna zwracać tylko jedną rzecz, a jak nie to jest zbyt rozbudowana?
Re: Zwracanie dwóch (kilku) rzeczy przez metodę
Author: Borneq
Date: Fri, 17 Jul 2015 16:55
Date: Fri, 17 Jul 2015 16:55
18 lines
1423 bytes
1423 bytes
W dniu 2015-07-17 o 18:16, Borneq pisze:
> W dniu 2015-07-17 o 18:11, Borneq pisze:
>> Jakie są inne możliwości? Ustawianie pola w obiekcie?
>
> Może jest zasada, że funkcja powinna zwracać tylko jedną rzecz, a jak
> nie to jest zbyt rozbudowana?
Zrobiłem klasę wewnątrz klasy:
class ReturningValues {
final float max;
final int cut;
ReturningValues(float max, int cut) {
this.max = max;
this.cut = cut;
}
}
Re: Zwracanie dwóch (kilku) rzeczy przez metodę
Author: Piotr Rezmer
Date: Fri, 17 Jul 2015 20:06
Date: Fri, 17 Jul 2015 20:06
40 lines
1883 bytes
1883 bytes
W dniu 2015-07-17 o 18:11, Borneq pisze:
> Jakie są inne możliwości? Ustawianie pola w obiekcie?
Tak, np. jak używasz Axis do generacji kodu klienta Web Services, jeśli
masz argument w stylu out to używana jest klasa pomocnicza. Np. jeśli
masz metodę z sygnaturką
Foo( out int arg1, out int arg2 )
To używane są klasy IntHolder które mają pole intValue. I oczywiście są
podobne klasy dla innych typów podstawowych.
Ogólne lepiej jest jeśli metoda zwraca jedną zmienną wynikową. Jeśli
wydaje się to nielogiczne, a zwracane wyniki tworzą jakąś logiczną
całość to warto użyć obiektu-kontenera, np. coś w rodzaju
public GpsCoordinates getCurrentLocation() {
}
public class GpsCoordinates {
private xPos float;
private yPos float;
public float getLongtitude() {
return xPos;
}
public float getLattitude() {
return yPos;
}
}
--
pozdrawiam
Piotr
XLR250&bmw_f650_dakar
Re: Zwracanie dwóch (kilku) rzeczy przez metodę
Author: Piotr Rezmer
Date: Fri, 17 Jul 2015 20:07
Date: Fri, 17 Jul 2015 20:07
12 lines
1195 bytes
1195 bytes
W dniu 2015-07-17 o 18:16, Borneq pisze: > Może jest zasada, że funkcja powinna zwracać tylko jedną rzecz, a jak > nie to jest zbyt rozbudowana? Tak, tej zasady bym się trzymał. -- pozdrawiam Piotr XLR250&bmw_f650_dakar
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads