Product Design, Manufacturing & Innovation Resources
Heim » Lexikalische Scoping in R

Lexikalische Scoping in R

1980
  • Gerald Jay Sussman
  • Guy L. Steele Jr.
Computerprogrammierer, der lexikalisches Scoping in der Programmiersprache R demonstriert.

(Abbildung dient nur zur Veranschaulichung)

R verwendet lexikalisches Scoping, ein Konzept, das aus der Scheme-Sprache übernommen wurde. Das bedeutet, dass die Werte freier Variablen in einer Funktion aufgelöst werden, indem sie in der Umgebung gefunden werden, in der die Funktion definiert wurde, und nicht in der Umgebung, in der sie aufgerufen wird. Dies macht das Funktionsverhalten vorhersehbarer und unabhängig vom Aufrufkontext – ein Schlüsselmerkmal der funktionalen Programmierung.

Lexical scoping, also known as static scoping, is a fundamental convention for looking up variable names in a programming language. In R, when a function needs to access a variable that is not defined locally (a “free variable”), it searches for that variable in the environment where the function was created. This “creation environment” is permanently attached to the function. This contrasts with dynamic scoping, used in some older languages, where the search would proceed up the chain of function calls (the “calling environment”).

Betrachten wir beispielsweise eine Funktion `f()`, die eine Variable `x` verwendet, diese aber nicht definiert. Wenn `f()` in der globalen Umgebung definiert ist, in der `x` den Wert 10 hat, verwendet `f()` unabhängig vom Aufrufort immer `x = 10`. Selbst wenn sie von einer anderen Funktion aufgerufen wird, die ein eigenes lokales `x = 20` hat, ignoriert `f()` das `x` der aufrufenden Umgebung und verwendet das aus ihrer Definitionsumgebung. Dieses Verhalten erleichtert das Debuggen und Nachvollziehen des Codes, da das Verhalten einer Funktion ausschließlich durch ihren eigenen Code und die Umgebung, in der sie definiert wurde, bestimmt wird.

Diese Funktion ist für funktionale Programmierparadigmen unerlässlich und ermöglicht leistungsstarke Konstrukte wie Closures, mit denen sich eine Funktion die Umgebung, in der sie erstellt wurde, „merken“ kann. Sie wird in der fortgeschrittenen R-Programmierung und Paketentwicklung intensiv genutzt, beispielsweise in der `lapply`-Funktionsfamilie und in Frameworks wie Shiny für Webanwendungen.

UNESCO Nomenclature: 1203
- Computerwissenschaften

Typ

Abstraktes System

Störung

Inkremental

Verwendung

Weitverbreitete Verwendung

Vorläufer

  • Das Konzept des Geltungsbereichs in Programmiersprachen
  • Die Programmiersprache Lisp und ihre Dialekte
  • Die Programmiersprache Scheme, die lexikalisches Scoping populär machte
  • Lambda-Kalkül als theoretische Grundlage für Funktionen und Umfang

Anwendungen

  • Erstellung von Closures in R für die funktionale Programmierung
  • Entwicklung von Paket-Namespaces zur Vermeidung von Variablenkonflikten
  • Ermöglichung nicht standardmäßiger Auswertungstechniken, die in Paketen wie dplyr verwendet werden
  • Erstellen von robustem und modularem Code ohne Nebenwirkungen

Patente:

    Potenzielle Innovationsideen

    Aufgrund des hohen Datenverkehrs durch Web-Scraping-Bots, der derzeit mehr als 40.000 Anfragen pro Tag umfasst, ist dieser Inhalt ausschließlich Community-Mitgliedern vorbehalten.
    > Anmelden < oder > Registrieren < (100% kostenlos) Zugriff darauf sowie auf alle anderen eingeschränkten Inhalte und Tools.

    Verwandt mit: lexikalischer Gültigkeitsbereich, statischer Gültigkeitsbereich, funktionale Programmierung, R, Scheme, Umgebung, Closure, freie Variable, Namensraum, nicht standardkonforme Auswertung.

    Historischer Kontext

    Lexikalische Scoping in R

    1973
    1980
    1980
    1980
    1982-07-01
    1988-06-01
    1990
    1970-01-01
    1975-06-01
    1980
    1980
    1980
    1986-01-01
    1990
    1990

    (wenn das Datum unbekannt oder nicht relevant ist, z. B. „Strömungsmechanik“, wird eine gerundete Schätzung seines bemerkenswerten Auftretens bereitgestellt)

    Bilder in voller Größe und Downloads sind nur für registrierte Mitglieder 100% kostenlos verfügbar.

    > Login <