假设我们在球拍中有以下代码:
(struct st ( field1 field2# ))
#
是什么意思?
答案 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#只是一个字段的名称。正如杰克所写,#是名字中的合法人物。