使用函数创建结构实例
Posted
技术标签:
【中文标题】使用函数创建结构实例【英文标题】:Create an instance of struct using a function 【发布时间】:2021-10-11 13:32:58 【问题描述】:我需要使用函数创建实例,但使用以下代码时出现错误:
#lang racket
(struct Mdb(aname bname cname)#:mutable)
(define ainst(Mdb "aval" "bval" "cval"))
(define ff(λ (newname)
(define newname(Mdb "xval" "xbval" "cbval"))))
开始(可能是隐式的):在一系列内部定义之后没有表达式:(begin (define newname (Mdx "" "" ""))) (定义新名称(Mdx“”“”“”))
【问题讨论】:
你不能使用函数参数作为define
的变量名,它不起作用。您将不得不重新考虑使用 newname
想要完成的任务。
【参考方案1】:
你真正想做什么?定义一个创建结构实例的函数? 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中的工作方式。
【讨论】:
以上是关于使用函数创建结构实例的主要内容,如果未能解决你的问题,请参考以下文章