Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scheme/racket超类型和访问结构属性_Scheme_Racket - Fatal编程技术网

scheme/racket超类型和访问结构属性

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)

如何访问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)
                                           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