🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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ę
#154224
Author: Borneq
Date: Fri, 17 Jul 2015 16:11
13 lines
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ę
#154225
Author: Borneq
Date: Fri, 17 Jul 2015 16:16
5 lines
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ę
#154226
Author: Borneq
Date: Fri, 17 Jul 2015 16:55
18 lines
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ę
#154228
Author: Piotr Rezmer
Date: Fri, 17 Jul 2015 20:06
40 lines
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ę
#154227
Author: Piotr Rezmer
Date: Fri, 17 Jul 2015 20:07
12 lines
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