scheme/racket超类型和访问结构属性
如何访问r的图层属性,以及1的位置?我只能使用point-x和point-y访问2和3,即使它是一个公共值结构scheme/racket超类型和访问结构属性,scheme,racket,Scheme,Racket,如何访问r的图层属性,以及1的位置?我只能使用point-x和point-y访问2和3,即使它是一个公共值结构 #lang racket (define (object-constructor super-type layer) (struct commmon-value(layer) #:super super-type #:transparent #:property prop:procedure (lambda (self)
#lang racket
(define (object-constructor super-type layer)
(struct commmon-value(layer)
#:super super-type
#:transparent
#:property prop:procedure (lambda (self)
layer))
comm)
(struct point (x y)
#:transparent
#:property prop:procedure (lambda (self)
x y)))
(define r ((object-constructor struct:point 1) 2 3 4))
(point-x r)
(point-y r)
r
> (comm 2 3 4)
输出为:
1
1
2
3
谢谢你告诉我match define,但它并没有真正回答我最初的问题,因为我想知道丢失的变量发生了什么。没有common-value-x,因为不是所有的common-value结构都有x。点结构存在,因此点x存在。那么我如何访问层?所有公共值都有一个层,因此在对象构造函数的定义之外使用common-value-layer.Move(struct commmon value(layer)…)。如果将其放置在主体中,则只能在对象构造函数主体内使用公共值层。
1
1
2
3