【发布时间】:2014-02-20 21:34:52
【问题描述】:
我在documentation 中搜索了 Racket(语言;非类型化),但无法确定是否可以为非可变结构提供可选参数。我希望能够做到:
(struct q-a-website (name interest-value #syntax? some-optional-field))
... (q-a-website "stack-overflow" 42 "My name is Jon Skeet") ...
... (q-a-website "quora" -inf.0) ...
在这个伪示例中,#syntax? 只是一个占位符,我怀疑可能存在一些特殊语法以使以下字段成为可选字段。有没有办法让你日常的、不可变的、普通的结构在基础 Racket 中具有可选参数?
澄清:如果创建的结构没有可选参数,则使用必须在创建时提供的默认值填充它。在这种情况下,该信息必须包含在(可能命名不当)#syntax? 块内。
(注意:我对在此问题中包含 struct 标记持保留态度,因为它提到了 Racket 不属于的 C 语言系列......)
【问题讨论】:
-
你能澄清一下你想要的语义吗?例如:当您为没有它的结构请求可选字段时会发生什么?我想我只是建议一个自定义的“构造函数”,但我们会看到......
-
和约翰一样的想法。还要考虑继承。
-
@JohnClements 我不确定您在问什么,但我正在寻找在未提供字段时创建的默认值。我将编辑我的问题。