oop - 我可以在 Racket 类中定义静态字段吗?

标签 oop racket

我找不到在 Racket 中定义静态字段的方法。通过静态,我的意思是属于整个类而不是实例的字段。

(define counter% (class object%  
  (field (current-count 0))
  (super-new)

  (define/public (get-count)
    current-count)

  (define/public (next) 
    (set! current-count (+ current-count 1))
    (set! total (+ total 1))
    (list current-count total))))

(define c1 (new counter%))
(define c2 (new counter%))

(send c1 next)
(send c1 next)
(send c1 next)
(send c2 next)

所以本例中的total应该是一个静态字段,输出应该是:

'(1 1)
'(2 2)
'(3 3)
'(1 4)

最佳答案

这个解决方案怎么样?

#lang racket

(define counter%
  (let ([total 0])
    (class object%  
      (field (current-count 0))
      (super-new)

      (define/public (get-count)
        current-count)

      (define/public (next) 
        (set! current-count (+ current-count 1))
        (set! total (+ total 1))
        (list current-count total)))))

(define c1 (new counter%))
(define c2 (new counter%))

(send c1 next)
(send c1 next)
(send c1 next)
(send c2 next)

关于oop - 我可以在 Racket 类中定义静态字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52483487/

相关文章:

C++ 属性声明

java - Java中的分数乘法器自定义方法

racket - 你如何使用代数 Racket 解构 let 绑定(bind)中的值

c - Racket/C FFI 中的变量函数

javascript - 如何在 console.log() 上显示的表中获取值?

java - 需要澄清继承和异常

python - 覆盖类提供的异常处理程序

scheme - 列表中的相对质数

scheme - Racket /方案中的惯用嵌套循环

scheme - 在 DrRacket 中编译 SICP 图片练习?