"额外"构造函数 make-posn 有效。为什么不单独 posn ?感谢。
我想将它用于 place-images 。
答案 0 :(得分:3)
我认为您可以通过将其添加到定义的开头来使posn
可用。
(define (posn x y)
(make-posn x y))
原因主要是历史性的。
回到过去,结构foo
的构造函数被命名为make-foo
。在某些时候它被改为foo
。由于教学语言用于书籍和其他教育材料,公约make-foo
没有改变。
由于教学语言通常使用posn
,因此名称为posn
的构造函数是故意隐藏的。
请注意,您不能“欺骗系统”并使用:
#lang racket
(struct posn (x y))
call drawing operations here
每次(struct posn ...)
都会看到一种新类型的posn
- 结构。在这里使用(posn ...)
将构建您的posn
- 结构版本,并且绘图操作期望来自教学语言 - 因此这将导致错误。
答案 1 :(得分:1)
你使用的是一种我认为的语言?在#lang racket
您使用(struct ...)
代替例如(define-struct ...)
定义结构,类似(posn ...)
代替(make-posn ...)
。