Ich stelle diese Frage, weil es nicht das erste Mal ist, dass ich diese Kodierungspraxis sehe, aber nie einen Kommentar über den Grund dafür sah: Ich habe die Quelle des Lua durchsucht und gesehen, dass sie 'Farben' verwenden (weiß, schwarz), um den Zustand eines Objekts zu beschreiben. Hier ist der Code von Kopf lgc.h:Verwenden von "Farbe", um den Flaggenstatus eines Objekts zu definieren?
/*
** Layout for bit use in `marked' field:
** bit 0 - object is white (type 0)
** bit 1 - object is white (type 1)
** bit 2 - object is black
** bit 3 - for userdata: has been finalized
** bit 3 - for tables: has weak keys
** bit 4 - for tables: has weak values
** bit 5 - object is fixed (should not be collected)
** bit 6 - object is "super" fixed (only the main thread)
*/
#define WHITE0BIT 0
#define WHITE1BIT 1
#define BLACKBIT 2
#define FINALIZEDBIT 3
#define KEYWEAKBIT 3
#define VALUEWEAKBIT 4
#define FIXEDBIT 5
#define SFIXEDBIT 6
#define WHITEBITS bit2mask(WHITE0BIT, WHITE1BIT)
#define iswhite(x) test2bits((x)->gch.marked, WHITE0BIT, WHITE1BIT)
#define isblack(x) testbit((x)->gch.marked, BLACKBIT)
#define isgray(x) (!isblack(x) && !iswhite(x))
#define otherwhite(g) (g->currentwhite^WHITEBITS)
#define isdead(g,v) ((v)->gch.marked & otherwhite(g) & WHITEBITS)
#define changewhite(x) ((x)->gch.marked ^= WHITEBITS)
#define gray2black(x) l_setbit((x)->gch.marked, BLACKBIT)
#define valiswhite(x) (iscollectable(x) && iswhite(gcvalue(x)))
ich schon etwas ähnliches in anderen Projekten gesehen (die verwendeten auch ‚rot‘), aber nie verstanden (noch gepflegt) was ist die begriffliche Verbindung zwischen Farbe und Objekten Zustand. Gibt es eine Art Konvention, die besagt, dass "weiß" "gut" und "schwarz", "schlecht" oder etwas Ähnliches bedeuten sollte? Weiß jemand, woher diese Praxis stammt?
Möglicherweise haben Sie in einer Implementierung eines rot-schwarzen Baums "rot" gesehen. Die Farben dort sind nicht signifikant, außer dass die Diagramme respektabler aussehen, als wenn sie orange-pinke Bäume wären. –