La razón por la que se hace es porque los códigos de estado son números enteros , por lo que esta expresión será una división entera.
La división entera significa que all successful HTTP status codes (es decir, los de 200-299) hará que la expresión falsa, no sólo 200.
no ser quisquilloso sobre Tim Bray, pero si yo estaba escribiendo esto mismo y quería transmitir mi intención con claridad, luego, para facilitar la lectura, probablemente querría ver algo más parecido al !statusCode.isSuccessful
. Si no sabía que HTTP 2xx significaba códigos de estado exitosos, no sería obvio cuál era la intención de la división de enteros.
Por supuesto, la división de enteros es probablemente más eficiente que hacer un montón de objetos StatusCode hipotéticos y luego hacer el envío del método isSuccessful
en ellos. Y el rendimiento es probablemente un objetivo clave para una clase de biblioteca de red.
Es HTTP_STATUS/100! = 2 mejor o más rápido que HTTP_STATUS! = 200?
No será más rápido (dos operaciones que en una), pero si es "mejor" es una comparación de manzanas a naranjas, ya que esas dos operaciones tienen un comportamiento diferente.
+1 para la explicación de por qué querría hacer esto, pero la PREGUNTA realmente debería ser, ¿es mejor y más rápida la división y los iguales? Que una comprobación de una RANGO de valores, porque eso es lo que representa la división. – dldnh
Y este truco es bueno y rápido si solo está comprobando si la operación fue exitosa, pero no le importa la definición granular de éxito que el servidor está informando. Probablemente sabrá si necesita información detallada de la respuesta. – gorjusborg
¿No necesita esto ser envuelto en algo como un parseInt()? 250/100 === 2.51 ... entonces la expresión, httpCode/100! = 2 todavía se resolvería en TRUE, ¿verdad? – RavenHursT