Czy mógły by ktoś wytłumaczyć wyczerpująco, a jednocześnie jak krowie na rowie DLACZEGO i PO CO i W JAKICH OKOLICZNOŚCIACH używa się słowa "void" w programowaniu obiektowym w javie?
Thank you from the mountain!
Czy mógły by ktoś wytłumaczyć wyczerpująco, a jednocześnie jak krowie na rowie DLACZEGO i PO CO i W JAKICH OKOLICZNOŚCIACH używa się słowa "void" w programowaniu obiektowym w javie?
Thank you from the mountain!
Void nie zwraca wartości. End of story
W teorii aby poinformować kompilator, że z funkcji nie będzie zwracana żadna wartość. W praktyce aby uprzykrzyć sobie i innym programistom życie.
void
używane jest w deklaracji metody.void
oznacza, że metoda nie zwróci żadnej wartościPrzykłady:
Odnośnie punktu 3 - taki kod się nie skompiluje:
class Main {
public static void dupa() {
return 3;
}
public static void main(String... args) {
System.out.println("Hello world!");
}
}
Odnośnie punktu 4 - taki kod się nie skompiluje:
class Main {
public static void dupa() {}
public static void main(String... args) {
System.out.println("Hello world!");
int dupa = dupa();
System.out.println("Hello dupa " + dupa);
}
}
dzięki za odpowiedzi i przykłady z d**y !
@PerlMonk: A wyświetlanie łańcucha tekstu za pomocą sout nie jest traktowane przez komp jako wartość tak?
Cos z sygnatura void
de facto jest imperatywna instrukcja, ktora wywoluje skutki uboczne (np. zapis do bazy danych, wypisanie cos na konsole, wysuniecie stacji dyskow, ...) a nie wartoscia.
@Michał Sikora: a co byś zwrócił w metodzie info dla loggera?
AnnDeveloper845 napisał(a):
@PerlMonk: A wyświetlanie łańcucha tekstu za pomocą sout nie jest traktowane przez komp jako wartość tak?
Jeśli pytasz o podane przeze mnie przykłady, to już pisałem - one się nie skompilują.
Jeśli pytasz o
System.out.println("Hello world!");
to taka instrukcja jest ok. Przyjmuje ona napis i nie zwraca nic.
scibi92 napisał(a):
@Michał Sikora: a co byś zwrócił w metodzie info dla loggera?
Nie kazdy void jest zly. Nawet w funkcyjnych jezykach uzywa sie unit'ow. Wiekszy problem to mutowalnosc stanu aplikacji tam gdzie nie jest to tak na prawde potrzebne :)
@stivens: no zgadzam się w 100%. Po prostu to nie jest problem istnienie voida tylko tego że programiści są słabi i robię mutowanie. Ale trudno żeby log.info czy System,out.println zwracało coś sensownego co nie jest voidem/unit-em etc.