?: – operator warunkowy – #10

Operator warunkowy (trenary operator). Czytam opis na wiki i nie rozumiem… ale u mnie panuje trzydniówka i nie potrafię się skupić.

w programowaniu konstrukcja języka programowania, w których odróżnia się wyrażenia od instrukcji, będący formą instrukcji warunkowej wyrażoną za pomocą operatora trójargumentowego; bywa ona instrukcją wyrażeniową.

W kodzie występuje z reguły tak:

condition ? true : false

Przykład z życia – tworzę sobie okienko dialogowe do dodawania/edycji posiłku. Jeśli okienko służy do edycji przekazuję do funkcji obiekt meal, jeśli jest to dodawanie nowego, to meal jest nullem.


builder.setPositiveButton(meal == null ? R.string.add : R.string.edit, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mealName = input.getText().toString();
if (meal != null) {
mealContract.updateMeal(builder.getContext(), mealName, meal);
} else {
mealContract.insertMeal(builder.getContext(), mealName);
}
adapter.updateResults(mealContract.getAllMealsArray(dbHelper));
}
});

Wykorzystuję operator warunkowy żeby w zależności od tego czy obiekt meal jest nullem, czy nie ustawiać na przycisku tekst „dodaj” lub „edytuj”


meal == null ? R.string.add : R.string.edit

Ten zapis jest chyba o wiele bardziej czytelny niż zrobienie tego samego za pomocą if-else. Jeszcze w takim miejscu jak konstruktor przycisku.

P.S. W fajnych językach jak groovy ( 😉 ) występuje jeszcze coś takiego jak skrócony operator trójwartościowy (Elvis).

4 uwagi do wpisu “?: – operator warunkowy – #10

Ta witryna wykorzystuje usługę Akismet aby zredukować ilość spamu. Dowiedz się w jaki sposób dane w twoich komentarzach są przetwarzane.