【发布时间】:2014-06-10 07:26:51
【问题描述】:
我目前正在学习 Racket,想知道以下内容是否可以在 Racket 中开箱即用。当我创建一个类的实例时,我使用以下语法:
(new Client% [name "John"]
[age 30])
我喜欢在创建类的实例时需要命名字段 id 的事实。创建结构时是否有等价物。我扫描了 Racket 文档,但在创建结构时找不到任何关于命名字段 id 的信息。
TIA。
【问题讨论】:
我目前正在学习 Racket,想知道以下内容是否可以在 Racket 中开箱即用。当我创建一个类的实例时,我使用以下语法:
(new Client% [name "John"]
[age 30])
我喜欢在创建类的实例时需要命名字段 id 的事实。创建结构时是否有等价物。我扫描了 Racket 文档,但在创建结构时找不到任何关于命名字段 id 的信息。
TIA。
【问题讨论】:
如果您查看documentation,您会发现struct 为您创建了一个构造函数,它将结构实例的初始值作为位置参数。 AFAIK 没有对类似“关键字”的构造函数的内置支持。
话虽如此,你总是可以做类似的事情
(struct client (name age))
(struct client (name age) #:transparent)
(define (new-client #:name n #:age a)
(client n a))
(new-client #:age 20 #:name "me")
获得具有关键字感觉的常用功能。
【讨论】: