繁体   English   中英

方案/球拍超类型和访问结构属性

[英]scheme/racket super-type and accessing struct properties

我如何访问r的layer属性,以及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)
#lang racket

(struct layer (common) 
  #:transparent
  #:property prop:procedure (lambda (self) (layer-common self)))

(struct point layer (x y) 
  #:transparent
  #:property prop:procedure (lambda (self) (layer-common self)))

(define r (point 1 2 3))
(match-define (point c x y) r)

(r)
c
x 
y

输出是:

1
1
2
3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM