变量和符号的根本区别是什么?

时间:2008-10-29 07:05:13

标签: emacs elisp

我对此很困惑。

他们的关系是什么(例如,如何在另一方的背景下使用)?非常感谢!!

3 个答案:

答案 0 :(得分:3)

this what you are looking for

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

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

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

类似地,函数按名称引用,函数的定义存储在符号的函数槽中。这意味着可以有一个具有相同名称的独特函数和变量。

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

您可以将符号视为特殊变量,其行为类似于常量。无论你多久使用一次,内存中只有一个实例。

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

您可以使用typdef在C / C ++中进行类似的事务,在static final的Java中使用const或在使用{{1}}的Delphi / Pascal / VB中进行小心,在那些和许多其他语言中,“符号”意味着不同的东西。