De vez en cuando me encuentro con el siguiente escenario - un procedimiento utiliza una función global f[x]
hacer algún cálculo, por su parte otro procedimiento hace f=5
que convierte todas las llamadas posteriores f[x]
en 5[x]
DownValue/OwnValue conflicto
que sé acerca de la localización variables, pero prefiero usar variables globales al principio del desarrollo.
No puedo pensar en una razón legítima para mezclar OwnValues y DownValues. ¿Hay alguna manera de implementar un mensaje de advertencia cuando ocurre una situación como la anterior?
Además de consejos a continuación, el contexto por defecto se pueden encontrar en OptionsInspector bajo Opciones de celda/Opciones de evaluación/CellContext
¿Qué piensas sobre anular Set/SetDelayed para imprimir un mensaje de advertencia si hay conflicto con DownValue/OwnValue? –
Probablemente sea posible, pero probablemente frágil. ¿Ha considerado usar contextos en su lugar ('Begin' /' End') o establecer contextos a nivel de celda/portátil? –
+1, no había pensado en usar valores como ese. Inteligente. Además, usted hace una buena observación sobre los contextos de nivel celular/portátil; He encontrado que es una de las mejoras más útiles desde la v. 5. – rcollyer