Opened 14 years ago
Closed 14 years ago
#1106 closed doubt (fixed)
Duda sobre el comportamiento de la función Select
Reported by: | imendez | Owned by: | Víctor de Buen Remiro |
---|---|---|---|
Priority: | low | Milestone: | |
Component: | Math | Version: | 2.0.1 |
Severity: | minor | Keywords: | |
Cc: |
Description
Hola, cuando la evaluación de la función Select para un elemento devuelve omitido, dicho elemento es seleccionado. ¿Debería ser así?
Se puede comprobar con el siguiente código:
Set Cjto = Select(Range(1, 28, 1), Real(Real n) { ? });
La duda me ha surgido porque dentro de la función Select comparaba dos reales, uno de los cuales valía ?, y la función Eq devolvía 1 en unos casos y ? en otros, como se ha dicho en el ticket 1096 (https://www.tol-project.org/ticket/1096)
Un saludo.
Change History (5)
comment:1 Changed 14 years ago by
Component: | ASCII data files → Math |
---|
comment:2 Changed 14 years ago by
Status: | new → accepted |
---|
comment:3 Changed 14 years ago by
Estoy de acuerdo, pero efectivamente creo que ayudaría que saliera un warning avisando de lo que está sucediendo, porque como dices la mayoría de las veces será por un error que hace que la condición del Select dé omitido.
De hecho, es lo que me pasó a mí, aunque a la hora de reportarlo haya puesto algo más sencillo y sin ningún sentido -directamente un Select(..., { ? }).
Gracias por la aclaración.
N.B.: he puesto el componente del ticket a "Math", no sé si es correcto, si no lo es cámbialo, por favor.
comment:4 Changed 14 years ago by
comment:5 Changed 14 years ago by
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
No tiene sentido hacer un Select con omitidos. Es simplemente imposible. El papel, o en su defecto la ventana de un editor, aguanta todo lo que quieras escribir encima, pero luego otra cosa es que lo escrito tenga algún significado.
En un Select sólo caben dos posibilidades ante cada elemento: o aceptarlo o no aceptarlo. No cabe cabe la posibilidad de omitir la selección. No hay ningún motivo por el cuál se deba aceptar o denegar un valor desconocido, así que simplemente no se puede hacer.
En puridad debería devolver una especie de conjunto omitido que sería luego intratable. Lamentablemente no está previsto en el lenguaje que lo haya ni creo que merezca la pena el esfuerzo.
Quizás sería pertinente que en estos casos saltara algún warning porque si se llega a ejecutar eso seguro que existe algún error previo que se ha pasado por alto o alguna situación imprevista.
Otras funciones con el mismo problema serían If y Else.