使用函数创建结构实例
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 中变量定义的工作方式。
我需要使用函数创建实例,但使用以下代码时出现错误:
#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 中变量定义的工作方式。