首页 文章

Fieldname# - 在球拍中定义结构

提问于
浏览
1

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

(struct st ( field1 field2# ))

# 是什么意思?

2 回答

  • 1

    没什么,它只是 field2# 这个名字的一部分 . Racket允许在名称中使用几乎所有符号 . 尽管有不寻常的符号, hash-ref! 已经得到了像普通函数一样的 hash-ref!number? .

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

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

    打印出来

    1
    2
    

    在DrRacket REPL中,正如您对普通struct字段的期望一样 .

  • 2

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

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

    (struct foo (bar#))
    

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

相关问题