Racket Fieldname#-定义球拍中的结构
假设racket中有以下代码: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
(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
是一个合法标识符。球拍标识符语法是如此的允许。使代码非常流畅,每当我使用其他语言时,我都会非常怀念使用谓词的?
。