Welches Konzept ist hier involviert? Beispiel in Python und R.

9

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

schreiben %Vor%

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

tun können %Vor%

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?

    
Dave31415 27.01.2014, 16:21
quelle

3 Antworten

1

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%     
robbles 16.02.2014 02:17
quelle
0

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

%Vor%

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.

    
tinybike 16.02.2014 05:57
quelle
0

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

    
Dave 28.02.2014 23:11
quelle