gpt4 book ai didi

struct - 添加结构字段

转载 作者:行者123 更新时间:2023-12-04 19:30:57 25 4
gpt4 key购买 nike

<分区>

所以,我有一个 Racket struct,stats :

(struct stats (str con dex int wis cha))

我有一个函数add-stats:

(define (modify-stats mods base)
(stats (+ (stats-str mods)
(stats-str base))
(+ (stats-con mods)
(stats-con base))
(+ (stats-dex mods)
(stats-dex base))
(+ (stats-int mods)
(stats-int base))
(+ (stats-wis mods)
(stats-wis base))
(+ (stats-cha mods)
(stats-cha base))))

显然,这真的很困惑,并且涉及到很多不需要的重复。我设法将其缩减为更易读的版本:

(define (modify-stats mods base)
(define (add-stat statid)
(+ (statid mods)
(statid base)))

(stats (add-stat stats-str)
(add-stat stats-con)
(add-stat stats-dex)
(add-stat stats-int)
(add-stat stats-wis)
(add-stat stats-cha)))

但是里面仍然有很多重复的“stat(s)”。有没有一种更简洁的方法可以对两个相同类型的结构的字段执行操作?


更新:我已经设法让它变得更好了:

(define (stat a-stat stats)
(match a-stat
["str" (stats-str stats)]
["con" (stats-con stats)]
["dex" (stats-dex stats)]
["int" (stats-int stats)]
["wis" (stats-wis stats)]
["cha" (stats-cha stats)]
[_ (error "Not a stat!")]))

(define (modify-stats mods base)
(define (add-stat string)
(+ (stat string mods)
(stat string base)))
(stats (add-stat "str")
(add-stat "con")
(add-stat "dex")
(add-stat "int")
(add-stat "wis")
(add-stat "cha")))

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com