使用函数创建结构实例

Create an instance of struct using a function

我需要使用函数创建实例,但使用以下代码时出现错误:

#lang racket

(struct Mdb(aname bname cname)#:mutable)
(define ainst(Mdb "aval" "bval" "cval"))

(define ff(λ (newname)
            (define newname(Mdb "xval" "xbval" "cbval"))))

begin (possibly implicit): no expression after a sequence of internal definitions in: (begin (define newname (Mdx "" "" "")))
(define newname (Mdx "" "" ""))

真正想做什么?定义一个创建结构实例的函数? newname 参数应该做什么?仅供参考,这不是有效的语法,没有意义:

(define ff
  (λ (newname) ; what's the idea of this parameter?
    ; you need to return something after a `define`
    ; or else you'll get that "no expression after
    ; a sequence of internal definitions" error
    (define newname (Mdb "xval" "xbval" "cbval"))))

如果你真的想使用一个程序,你可以试试这个:

(define ff
  (λ () (Mdb "xval" "xbval" "cbval")))

(define newname (ff))

但这只是一种人为的表达方式:

(define newname (Mdb "xval" "xbval" "cbval"))

郑重声明:您不能将函数参数用作 define 的变量名,这是不允许的,这不是 Scheme 中变量定义的工作方式。