【问题标题】:what's the fundamental differences of variables and symbols?变量和符号的根本区别是什么?
【发布时间】:2008-10-29 07:05:13
【问题描述】:

我对此感到很困惑。

它们之间的关系是什么(例如,如何在另一个上下文中使用一个)?非常感谢!!

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    this what you are looking for 吗?

    符号基本上只是一个具有四个字段的对象:

    • 一个名字(一个字符串),
    • 一个值(一些 Lisp 对象),
    • 一个函数(一些 Lisp 对象)和
    • 属性列表(通常是交替的关键字/值对列表)。

    符号的特殊之处在于通常只有一个符号具有给定名称,并且该符号由名称引用。这使得符号成为一种按名称调用数据的便捷方式,即实现变量。 (变量的值存储在值槽中。)

    同样,函数是通过名称引用的,函数的定义存储在符号的函数槽中。这意味着可以存在同名的不同函数和变量。

    属性列表用作将附加值与特定名称相关联的更通用机制,并且命名空间再次独立于函数和变量命名空间。

    【讨论】:

      【解决方案2】:

      简单地说,变量是符号和值之间的绑定。符号是变量的名称。当绑定符号(即变量名)被求值时,返回变量值,

      您也可以使用不是变量的符号,即。未绑定到值的名称。但是,您无法评估未绑定的符号。

      在 Lisp-2 中,一个符号可以同时绑定到一个值和一个函数,上下文定义了计算符号的结果是值还是函数。

      【讨论】:

        【解决方案3】:

        符号的概念有点难以理解。 (即使我不确定我明白了:))

        您可以将符号视为行为类似于常量的特殊变量。内存中只有一个实例,无论您使用的频率如何。

        好处是节省内存,并且可以查看一个值是否以类似常量的方式使用。 (提高代码可读性)

        您可以在 C/C++ 中使用 typdef、在 Java 中使用 static final 或在 Delphi/Pascal/VB 中使用 const 来做类似的事情,但要小心,在这些和许多其他语言的“符号”意味着不同的东西。

        【讨论】:

          猜你喜欢
          • 2010-10-11
          • 2011-04-05
          • 2014-09-16
          • 1970-01-01
          • 2019-12-04
          • 2011-02-10
          • 2012-07-24
          • 2012-02-25
          • 2014-09-04
          相关资源
          最近更新 更多