什么不能使用标识符?

时间:2009-03-29 19:21:29

标签: identifier

我正在尝试了解identifiers代表什么以及它们不代表什么。

据我了解,标识符是方法,常量,变量,类,包/模块的名称。它涵盖了很多。但你能用它做什么呢?

8 个答案:

答案 0 :(得分:3)

每种语言在哪些实体/抽象可以或不可以在该语言中被命名和重用方面都有所不同。

答案 1 :(得分:3)

在大多数语言中,您不能使用标识符进行中缀算术运算。

例如,plus是一个标识符,您可以创建一个名为plus的函数。但是写一下你可以写a = b + c;,没有办法定义一个名为plus的运算符来使a = b plus c;起作用,因为语法语法根本不允许使用标识符。

答案 2 :(得分:2)

标识符允许您为某些数据指定名称,以便稍后引用。这是标识符的限制;除了对某些数据的引用之外,你不能“使用”它。

也就是说,这有很多含义,有些含蓄。例如,在大多数语言中,函数在某种程度上被认为是数据,因此函数名称是标识符。在函数是值但不是“第一类”值的语言中,您不能在某个地方使用函数的标识符,您可以将标识符用于其他内容。在某些语言中,函数和其他数据甚至会有单独的命名空间,因此在文本上相同的标识符可能引用两个不同的东西,并且它们将通过使用它们的上下文来区分。

您通常(即,在大多数语言中)不能使用标识符的示例是作为对语言关键字的引用。例如,通常无法做到这种事情:

let during = while;
during (true) { print("Hello, world."); }

答案 3 :(得分:1)

你可以说它用于你想要多次引用的所有东西,或者甚至一次(但用它来澄清指示物的目的)。

可以/不能命名的内容因语言而异,通常非常直观,恕我直言。

“匿名”实体是未命名的东西,尽管以某种方式提及。

#!/usr/bin/perl
$subroutine = sub { return "Anonymous subroutine returning this text"; }

在Perl-speak中,这是匿名的 - 子程序没有命名,但引用变量$ subroutine引用它。

PS:在Perl中,子程序的名称如下:

sub NAME_HERE {
    # some code...
}

答案 4 :(得分:1)

说,在Java中你不能写出类似的内容:

Object myIf = if;
myIf (a == b) {
    System.out.println("True!");
}  

所以,你不能命名一些代码语句,给它一个别名。在REBOL中,完全有可能:

myIf: if
myIf a = b [print "True!"]

如你所见,什么可以和什么不能命名取决于语言。

答案 5 :(得分:0)

如其名称所示,标识符用于标识某些内容。因此,对于可以唯一标识的所有内容,您可以使用标识符。但是,例如文字(例如字符串文字)不是唯一的,因此您不能使用标识符。但是,您可以创建变量并为其指定字符串文字。

答案 6 :(得分:0)

把汤弄出来是相当犯规的。

在Lisp等语言中,标识符本身作为符号存在,而在非内省标识符的语言中,运行时中不存在。

您可以通过在其前面放置单引号来编写文字标识符/符号:

[1]> 'a
A

您可以创建变量并为其指定符号文字:

[2]> (setf a 'Hello)
HELLO
[3]> a
HELLO
[4]> (print a)

HELLO 
HELLO

您可以将两个变量设置为相同的符号

[10]> (setf b a)
HELLO
[11]> b
HELLO
[12]> a
HELLO
[13]> (eq b a)
T
[14]> (eq b 'Hello)
T

请注意,绑定到b和a的值是相同的,值是文字符号'Hello

您可以将函数绑定到符号

[15]> (defun hello () (print 'hello))
HELLO

并称之为:

[16]> (hello)

HELLO 
HELLO

在常见的lisp中,变量绑定和函数绑定是不同的

[19]> (setf hello 'goodbye)
GOODBYE
[20]> hello
GOODBYE
[21]> (hello)

HELLO 
HELLO

但在Scheme或JavaScript中,绑定位于同一名称空间中。

如果将标识符用作符号,则可以使用标识符执行许多其他操作。我怀疑在Lisp中比我更了解的人将能够展示你不能用标识符做的任何事情。

但即便是Lisp也无法制作标识符汤。

答案 7 :(得分:0)

左侧字段思维的排序,但JSON中包含所有这些引用,以消除JavaScript关键字搞乱解析的危险。

相关问题