Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Racket Fieldname#-定义球拍中的结构_Racket - Fatal编程技术网

Racket Fieldname#-定义球拍中的结构

Racket Fieldname#-定义球拍中的结构,racket,Racket,假设racket中有以下代码: (struct st ( field1 field2# )) 是什么意思?没什么,它只是名称字段2的一部分。Racket允许在名称中使用几乎所有的符号。这就是为什么你会有像hash ref这样的东西和数字?是普通函数,尽管有不寻常的符号 您可以像访问任何其他字段一样访问和设置它: (struct st (field1 field2#)) (define a (st 1 2)) (st-field1 a) (st-field2# a) 这是打印出来的 1 2

假设racket中有以下代码:

(struct st ( field1 field2# )) 

是什么意思?

没什么,它只是名称
字段2的一部分。Racket允许在名称中使用几乎所有的符号。这就是为什么你会有像hash ref这样的东西
数字?
是普通函数,尽管有不寻常的符号

您可以像访问任何其他字段一样访问和设置它:

(struct st (field1 field2#))
(define a (st 1 2))
(st-field1 a)
(st-field2# a)
这是打印出来的

1
2

在DrRacket REPL中,正如您对普通结构字段的期望一样。

它取决于上下文。如果您在blog/book等文本中看到了符号字段#,那么它可能表示“字段号”。常用#作为数字的缩写

另一方面,如果您在代码中看到它,如:

 (struct foo (bar#))

然后,只需输入一个字段的名称。正如Jack所写,“#在名称中是一个合法字符。

一个小小的例外是,您不能将
#
作为第一个字符来命名标识符。这是为读卡器宏保留的。例如,
#foobar
是不好的,但是
f#oobar
是好的。对于
#
是第一个字符,第二个字符是
%
的情况,有一个小小的例外<代码>#%foobar
是一个合法标识符。球拍标识符语法是如此的允许。使代码非常流畅,每当我使用其他语言时,我都会非常怀念使用谓词的