Ich versuche die richtige Sprache zu finden, um das folgende Konzept zu beschreiben. Vielleicht kann mir jemand helfen.
Dies ist eine allgemeine Frage zur Programmierung, aber ich werde Python und R für Beispiele verwenden.
In Python können wir etwas in ein Wörterbuch wie dieses einfügen
%Vor% In R könnten wir zum Beispiel mit dem data.table
-Paket etwas wie
Diese tun verschiedene Dinge, aber vergleichen Sie die zweite Zeile von jedem von ihnen. In Python ist "myField"
eine Zeichenfolge. Im Beispiel R data.table
gibt es keine Zeichenfolge. Das R-Beispiel ist ein bisschen nett, weil es Ihnen das Tippen erspart, aber dann gibt es Ihnen Schwierigkeiten, wenn Sie ein Programm schreiben wollen, in dem myField
eine Variable ist. In Python ist das trivial, weil Sie einfach
wobei myVariable
als eine andere Zeichenfolge definiert ist. In R können Sie dies auch tun, müssen aber eine andere Syntax verwenden, was bedeutet, dass Sie zwei völlig unterschiedliche syntaktische Arten der Programmierung kennen müssen.
Meine Frage: Wie heißt das? Ich weiß, dass es etwas mit Scoping-Regeln zu tun hat (vielleicht Metaprogrammierung?), Aber ich kann nicht die richtige Sprache dafür finden. Jemand?
Ich glaube, diese Programmiersprache "Feature" ist bekannt als "bare Strings".
PHP hat auch (veraltete) Unterstützung dafür: Why ist $ foo [bar] falsch?
Wegen des Risikos der Überschneidung mit variablen oder konstanten Namen wird es weithin als eine ziemlich schreckliche Idee betrachtet und sollte im Produktionscode definitiv vermieden werden. JavaScript hat jedoch eine interessante Wendung bei der Idee, die diese Probleme vermeidet:
%Vor%Sie können die Schlüssel für Inline-Objekte definieren, ohne Anführungszeichen zu verwenden. Das funktioniert, weil Sie das nicht anders machen können - der Schlüssel wird als String geparst, niemals als Variablenname. Ich habe gefunden, dass dies ein ziemlich nützlicher Kompromiss in Programmen ist, wo Sie nur vordefinierte Schlüssel in Wörterbüchern verwenden. Die Python-Version benötigt als Referenz die Anführungszeichen, erlaubt Ihnen aber, eine Variable zu verwenden, wie Sie gezeigt haben:
%Vor% Ich bin mir nicht sicher, ob Sie das fragen, aber in Ihrem Python-Beispiel ist "myField"
in myData["myField"]
ein Zeichenkettenliteral - also Sie hartcodieren im Schlüsselwert. Ähnlich, wenn Sie eine Python-Funktion definiert haben
und Sie haben die Funktion als myFun("goober")
aufgerufen, Sie würden ein String-Literal ( "goober"
) übergeben, anstatt eine Variable b = "goober"
zu definieren und dann die Variable als myFun(b)
zu übergeben.
Ihre Frage scheint mit der Definition / Verwendung von (nicht bewerteten) Symbolen in Lisp (und verwandten Sprachen, und auch Mathematica) in Verbindung zu stehen, vgl. die Antworten hier
Tags und Links python r functional-programming