I view entweder durch Laden aq Skript definieren kann, oder interaktiv von der Konsole:[KDB +/Q]: (Re-) programmatisch Ansicht definieren (dynamisch)
q)myview::a+b /even semi-programmatically using ugly strings: value"myview::a+b"
Einige Exploration:
q)value `. `myview
::
(+;`a;`b)
`a`b
"a+b"
kann ich sehen, dass meine neu gestaltete Ansicht nun Teil der globalen Umwelt Wörterbuch ist:
q)select myview from `.
myview| a+b
Der Wert Teil dieser Schlüssel-Wert-Paar ist eine Liste der Lambda-Typen:
q)-3!value select myview from `.
",a+b"
q) type first value select myview from `.
100h
Obwohl {a+b}
Lambda-Typ als auch ist ...
q)type {a+b}
100h
... die a+b
und {a+b}
nicht das gleiche:
q){a+b} ~ first value select myview from `.
0b
Frage: Nun, da myview
ist definiert in der globalen Umgebung, wie kann ich seine Definition programmgesteuert ändern, um a+c
Lambda-Ausdruck zu sagen, indem auf diese Ansicht namentlich verwiesen wird, d.h. `myview
?
Zum Beispiel kann ich will diesen Eingang verarbeiten:
q)config:()!(); config[`myview]:"a+c"
Dank, jede mögliche Weise Ausdrücke anstatt String-Manipulation unter Verwendung von ? '' Meine Ansicht; a + c] '' würde '' c' Fehler werfen. Und das Verkapseln von Ausdruck in geschweiften Klammern '{a + c}', um die Auswertung zu verzögern, ist offensichtlich etwas anderes. Ich kann meinen Kopf nicht dazu bringen, die rechte Seite von 'myview | zu manipulieren a + c' –