make-function来自哪里?

ben*_*san 3 racket

此代码有效:

(define list-of-events 
  (for/list ([(date code)
              (in-query odc "select date, code from attendance
                             where student_id = ? and term_code = ?"
                        "12345" "654321")])
    (make-attendance-event date code)))
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试复制另一个表的行为时,make-attendance-event的并行项会抱怨它是一个"未绑定的标识符".

现在,参加考勤活动来自哪里?

soe*_*ard 5

标识符make-attendance-event来自a (define-struct attendance-event (...)).

结构定义如

(define-struct foo (a b))
Run Code Online (Sandbox Code Playgroud)

将扩展为多个定义.

  1. make-foo将构造foo结构
  2. foo-a,foo-b字段访问器
  3. FOO?一个可以确定值是否为foo的谓词

在高级语言中,您还可以获得:

  1. set-foo-a!,set-foo-b!改变各自的领域.

在此处查看更多信息:http: //docs.racket-lang.org/htdp-langs/advanced.html?q = define -struct#%28form._%28%28lib._lang%2Fhtdp-advanced..rkt%29. _define-结构%29%29

请注意,您可以将鼠标悬停make-attendance-event在DrRacket中的标识符上,右键单击并选择"跳转到绑定事件"以查看标识符的定义位置.