【问题标题】:scheme constructors and accessors方案构造器和访问器
【发布时间】:2014-02-17 14:14:33
【问题描述】:

使用方案:

我正在处理我的作业中的一个问题,该问题提出以下问题:

玩具数据结构指定玩具的名称、描述、购买价格和建议的销售价格。创造 玩具结构的构造函数和访问器,确保你这样做 不要使用 Racket 的内置结构 [1 分]。仅使用您的访问器 要获取结构中的数据,请定义一个对 按两个价格之间的差异列出的玩具结构 [2 标记]。

问题是否要求使用具有玩具名称、描述和获取价格的构造函数创建我自己的玩具数据结构,以及获取玩具变量(如名称或描述)的访问器?

如果是这样,我该怎么做?

scheme中有struct这样的关键字吗?

【问题讨论】:

    标签: constructor scheme accessor


    【解决方案1】:

    问题是否要求使用具有玩具名称、描述和获取价格的构造函数创建我自己的玩具数据结构,以及获取玩具变量(如名称或描述)的访问器?如果是这样,我该怎么做?

    是的,这正是作业所说的。提示:一个简单的列表就可以了,将每个字段存储在一个位置,访问器将返回该位置的元素。例如,如果我们将名称存储在第一个位置,那么访问器将返回列表的car,以此类推。

    scheme中有struct这样的关键字吗?

    是的,奇怪的是,在 Racket 中被称为struct(它是一个宏,而不是关键字)。同样在 R7RS(或 SRFI-9)中,我们有记录类型。但是作业特别声明你不能使用这个!

    【讨论】:

    • 那么我该如何回答这个问题呢?
    • @user3259073 我在上面告诉过你!创建一个包含每个字段值的列表,并根据它们的位置访问每个字段。例如,如果列表包含名称、描述和价格,那么每个访问器将返回列表的第一个、第二个和第三个元素。为每个玩具创建一个新列表。就像馅饼一样简单。
    • 哦,好的,抱歉,我没有阅读您原始答案的第一部分。所以你的说法是:创建一个包含名称描述和价格列表的玩具(define toy (list("ted" "teddybear" 10))) (define (name x) (car x)) - 访问名称的 x ... 等等列表的其他部分?
    • @user3259073 是这样的想法是的,但不要硬编码列表中的值,将它们作为函数的参数传递,因此您可以调用相同的构造函数来创建不同的玩具,只需通过更改传递的参数
    • 我认为您可能正在将 Scheme 与 Racket 混合使用。 Scheme中没有struct这样的东西,但是R7RS中有record types,以前的版本有SRFI-9 Record types
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    相关资源
    最近更新 更多