Cita:
Iniciado por Zerjillo A ver... respecto al último post, en realidad estás haciendo "trampa". Estas devolviendo punteros (que no son objetos en si) y devuelves un 0, que en realidad es un puntero como otro cualquiera. Dado que C es un chapuzas con los castings y tipos, 0 es considerado también como un valor "false" cuando se hacen comparaciones...
Yo no estoy haciendo ninguna trampa, devuelvo un puntero a un objeto o devuelvo un puntero nulo.
Cita:
Iniciado por frijolerou "¿Es incohrente que la función devuelva un valor del tipo object si se cumple la condición, o un valor del tipo boolean si no se cumple? ¿O es más coherente que en ambos casos devuelva un valor booleano (true/false)?"
El post no habla de objetos, ni punteros, ni referencias ni nada, incluso habla de otro lenguaje por lo tanto considero mi solucion absolutamente correcta.
¿Te quedas mas tranquilo si pongo una comparacion que no sea con ! sino con == 0? Asi no hacemos "trampa" con castings pero en realidad es exactamente lo mismo y se puede devolver el valor de una funcion con lo que quieras, es un registro (eax).
Ya nos contaras donde estan los objetos que devolves ademas de en la memoria ... espero que no devuelvas objetos por valor.
Cita:
Iniciado por Zerjillo Pero en realidad no estás devolviendo objetos distintos.
¿Que pretendias devolver un objeto false? Eso no tiene ninguna utilidad real en el problema, yo devuelvo el objeto encontrado o 0 que marca la inexistencia del mismo.
Cita:
Iniciado por Zerjillo Por ejemplo, en php puedes devolver lo que quieras y luego tienes que hilar fino a ver que comparación usas si quieres saber que se ha devuelto realmente. Y eso es fuente de muchos errores y chapuzas, para que engañarnos.
Para que engañarnos si como dije antes el resultado de una funcion se pasa en un registro del microprocesador, veamos el standard C y su funcion strstr, gran "chapuza" a tu juicio me imagino.
Bueno, no estoy para nada de acuerdo con que la solucion que comente sea una chapuza y tampoco strstr, es perfectamente valida porque solo necesitamos saber si devolvio un puntero al objeto o no. No hay ningun tipo de confusion con, valga la redundancia, los tipos.