No sé si este es el comportamiento previsto o no (si lo es, lo siento, simplemente cierre este problema), ¡pero esto claramente no debería estar permitido!
Déjanos decir,
1) Quiero que una variable foo
tenga un valor de 1 por defecto,
2) y cambia su valor cuando el usuario interactúa de alguna manera (digamos entrada).
3) Una vez que el usuario haya terminado, el valor de foo
debe tener el valor de 1 nuevamente.
Lo que sucede aquí es que las funciones asociadas con setget
se llaman cada vez que el valor se establece en 1 cuando ya es 1, debe llamarse una vez (la primera vez) cuando el valor original es diferente. Esto es algo que mata el rendimiento para mí, sé que puedo hacer esto:
if (new_value == old_value):
return
Pero esto debería hacerse automáticamente.
No creo que sea una buena idea hacer esto automáticamente. Establecer una variable con el mismo valor que ya tiene no debería afectar el rendimiento, esto es algo que su función setget
debería manejar si es necesario. Además, agregar una verificación de valor _ afectará el rendimiento, ya que es una nueva ramificación (conceptualmente innecesaria).
Tampoco creo que podamos suponer que la configuración del mismo valor no tendrá ningún impacto en el colocador y, por lo tanto, se puede omitir.
Parece que tiene un setter muy complicado si el establecimiento de un valor cada vez puede hacer que el rendimiento sea un éxito.
Bueno, normalmente, cuando solo haces la autoasignación no sería un problema, pero si haces más trabajo que asignar un nuevo valor, como de lo que se trata "setget", perjudicará el rendimiento. Especialmente si el valor permanece sin cambios y se asigna automáticamente a cada cuadro.
Además, todos los compiladores de C ++ (que yo conozca) te protegen contra tales atrocidades. (Al menos para los tipos básicos, el operador de asignación de sobrecarga está anulando esta protección) De hecho, he visto algunos códigos que lo comprueban para ver si el valor sigue siendo el mismo después de la autoasignación de números flotantes en amd cpus. Eso se hizo como prueba de cordura para algún proyecto. Olvidé cómo se llamaba.
En mi opinión, no vale la pena romper el código antiguo cuando hay una solución simple (tengo un código que utiliza el configurador para mostrar una notificación al usuario para los mismos intentos de asignación de valor).
Comentario más útil
En mi opinión, no vale la pena romper el código antiguo cuando hay una solución simple (tengo un código que utiliza el configurador para mostrar una notificación al usuario para los mismos intentos de asignación de valor).