gpt4 book ai didi

scheme - 如何根据 Scheme/Racket 中的条件实际定义很多东西?

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

我在 Racket 工作,但据我所知,Scheme 通常就是这种情况;你不能做这样的事情,因为我们试图在表达式上下文中定义一些东西:

(if condition
(define x "do a backflip")
(define x "do a barrel roll"))

现在对于这个特殊情况,我可以做这样的事情:
(define x
(if condition
"do a backflip"
"do a barrel roll"))

但是如果你有很多不同的东西来定义这真的很糟糕,因为而不是
(if condition
(begin (define x "do a backflip")
(define y "awesome")
(define z "shoot me"))
(begin (define x "do a barrel roll")
(define y "nice")
(define z "give me sweet release")))

我们得到
(define x                                                                                                                                                                                                                                      
(if condition
"do a backflip"
"do a barrel roll"))
(define y
(if condition
"awesome"
"nice"))
(define z
(if condition
"shoot me"
"give me sweet release"))

这并不像它可能的那样干燥,我们不断重复对 condition 的测试。 .结果是,如果不是测试 condition我们要检查 other-condition ,我们必须做出改变 n次为 n被定义的事物的数量。有没有更好的方法来做到这一点,如果是这样:如何?

最佳答案

使用 define-values :

(define-values (x y z) (if condition
(values "do a backflip" "awesome" "shoot me")
(values "do a barrel roll" "nice" "give me sweet release")))

关于scheme - 如何根据 Scheme/Racket 中的条件实际定义很多东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45211537/

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