java - the - ¿Qué es un signo de interrogación "?" Y "Colon": "¿Se usa el operador?
ternary operator python (7)
Eso es una declaración if / else igual a
if(row % 2 == 1){
System.out.print("<");
}else{
System.out.print("/r>");
}
Esta pregunta ya tiene una respuesta aquí:
- ¿A qué se llama el operador Java? Y ¿qué hace? 14 respuestas
Dos preguntas sobre el uso de un signo de interrogación "?" y colon ":" operador dentro del paréntesis de una función de impresión: ¿Qué hacen? Además, ¿alguien sabe el término estándar para ellos o dónde puedo encontrar más información sobre su uso? He leído que son similares a una declaración ''if'' ''else''.
int row = 10;
int column;
while (row >= 1)
{
column = 1;
while(column <= 10)
{
System.out.print(row % 2 == 1 ? "<" : "/r>");
++column;
}
--row;
System.out.println();
}
Este es el operador condicional ternario , que se puede usar en cualquier lugar, no solo la instrucción de impresión. A veces se llama simplemente "el operador ternario", pero no es el único operador ternario , solo el más común.
Aquí hay un buen ejemplo de Wikipedia que demuestra cómo funciona:
Se escribe una construcción if-else tradicional en C, Java y JavaScript:
if (a > b) { result = x; } else { result = y; }
Esto se puede reescribir como la siguiente declaración:
result = a > b ? x : y;
Básicamente toma la forma:
boolean statement ? true result : false result;
Entonces, si la declaración booleana es verdadera, obtienes la primera parte, y si es falsa obtienes la segunda.
Pruebe esto si eso todavía no tiene sentido:
System.out.println(true ? "true!" : "false.");
System.out.println(false ? "true!" : "false.");
Quizás puede ser el ejemplo perfecto para Android, por ejemplo:
void setWaitScreen(boolean set) {
findViewById(R.id.screen_main).setVisibility(
set ? View.GONE : View.VISIBLE);
findViewById(R.id.screen_wait).setVisibility(
set ? View.VISIBLE : View.GONE);
}
Se les llama el operador ternario ya que son los únicos en Java.
La diferencia con el constructo if ... else es que devuelven algo y este algo puede ser cualquier cosa:
int k = a > b ? 7 : 8;
String s = (foobar.isEmpty ()) ? "empty" : foobar.toString ();
También aunque publicaría la respuesta a otra pregunta relacionada que tenía,
a = x ? : y;
Es equivalente a:
a = x ? x : y;
Si x es falso o nulo, entonces se toma el valor de y.
es un operador ternario y en inglés simple dice "if row%2 is equal to 1 then return < else return /r"
a=1;
b=2;
x=3;
y=4;
answer = a > b ? x : y;
answer=4
ya que la condición es falsa, toma el valor y.
Un signo de interrogación (?)
. El valor a usar si la condición es verdadera
A dos puntos (:)
. El valor a usar si la condición es falsa