Fieldname# - 在球拍中定义结构

时间:2014-08-18 07:23:16

标签: racket

假设我们在球拍中有以下代码:

(struct st ( field1 field2# )) 

#是什么意思?

2 个答案:

答案 0 :(得分:2)

没什么,它只是名称field2#的一部分。 Racket允许在名称中使用几乎所有符号。这就是为什么你有hash-ref!number?之类的东西是普通函数的原因,尽管有不寻常的符号。

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

(struct st (field1 field2#))
(define a (st 1 2))
(st-field1 a)
(st-field2# a)

打印出来

1
2
正如您对普通结构字段所期望的那样,在DrRacket REPL中

答案 1 :(得分:1)

这取决于具体情况。如果您在博客/书籍等文本中看到了符号字段#,那么它可能意味着“字段编号”。通常使用#作为数字的缩写。

另一方面,如果您在代码中看到它,请执行以下操作:

 (struct foo (bar#))

然后bar#只是一个字段的名称。正如杰克所写,#是名字中的合法人物。