Product Design, Manufacturing & Innovation Resources
» R 中的词汇作用域

R 中的词汇作用域

1980
  • Gerald Jay Sussman
  • Guy L. Steele Jr.
计算机程序员演示 R 编程语言中的词法范围。.

(图片仅供参考)

R 使用词法作用域,这是从 Scheme 语言继承而来的概念。这意味着函数中自由变量的值是通过在函数定义环境中而不是调用环境中查找来解析的。这使得函数行为更加可预测,并且不受调用上下文的影响,这是函数式编程的一个关键特性。

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”).

例如,考虑一个使用变量`x`但未定义它的函数`f()`。如果`f()`定义在全局环境中(其中`x`的值为10),那么无论从何处调用`f()`,它始终会使用`x = 10`。 即使从另一个函数内部调用,而该函数拥有自己的局部变量`x = 20`,`f()`仍会忽略调用环境中的`x`,直接使用其定义环境中的值。这种行为使得代码更易于调试和理解,因为函数的行为完全取决于其自身代码及其定义时的环境。.

该特性对函数式编程范式至关重要,它使闭包等强大构造成为可能——函数能够“记住”其创建时的环境。这种特性在高级R编程和包开发中被广泛运用,例如`lapply`函数家族以及Shiny等用于Web应用程序的框架。.

UNESCO Nomenclature: 1203
- 计算机科学

类型

抽象系统

中断

递增

用法

广泛使用

前体

  • 编程语言中的作用域概念
  • Lisp 编程语言及其方言
  • Scheme 编程语言,它普及了词法作用域
  • Lambda 演算作为函数和作用域的理论基础

应用程序

  • 在 R 中创建闭包用于函数式编程
  • 开发包命名空间以避免变量冲突
  • 启用 dplyr 等软件包中使用的非标准评估技术
  • 构建无副作用的健壮且模块化的代码

专利:

    潜在创新理念

    由于机器人流量被拦截(目前每天超过 4 万),此内容仅限社区成员查看。
    > 登录 > 或者 > 注册 < (100% 免费)即可访问此内容,以及所有其他受限内容和工具。

    相关主题:词法作用域、静态作用域、函数式编程、R语言、Scheme语言、环境、闭包、自由变量、命名空间、非标准求值。.

    历史背景

    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

    (如果日期未知或不相关,例如“流体力学”,则提供其显著出现的近似估计)

    相关发明、创新和技术原理

    只有注册会员才能免费获得 100% 的全尺寸图片和下载。.

    > 登录 <