1: do something if x > 10: retu-6ren">
gpt4 book ai didi

scheme - 方案中的 "return"是什么?

转载 作者:行者123 更新时间:2023-12-02 08:34:21 26 4
gpt4 key购买 nike

我正在尝试将一些 python 代码转换为方案。

def test(x):
if x > 1:
do something
if x > 10:
return
if x == 4:
do something
test(11)

我没有在计划中找到“返回”。当 x > 10 时,我想退出测试功能。
如何模拟方案中的“返回”?
(我正在使用诡计)
谢谢

最佳答案

在 Scheme 中没有明确的 return关键字 - 比这简单得多,表达式序列中最后一个表达式的值是返回的值。例如,您的 Python 代码将转换为此,并注意 (> x 10) case 必须移到底部,所以如果是真的,它可以立即退出函数 #f值(value)。

(define (test x)
(if (> x 1)
(do-something))
(if (= x 4)
(do-something))
(if (> x 10)
#f))

(test 11)
=> #f

事实上,在对条件重新排序后,我们可以删除最后一个,但要注意:如果 x 将返回一个未指定的值。不是 4 ,根据 Guile 的 documentation - 换句话说,你应该总是在每种情况下返回一个值,和一个 if表达式应该有结果部分和替代部分。
(define (test x)
(if (> x 1)
(do-something))
(if (= x 4)
(do-something)))

(test 11)
=> unspecified

顺便说一句,我认为 Python 代码中的逻辑有点偏离。每当值 x 时,将始终评估第一个条件。大于 1已通过,但如果小于或等于 1 Python 中的返回值将是 None并且在 Scheme 中是未指定的。此外,原始函数没有明确返回值 - 在 Python 中,这意味着 None将被返回,在 Scheme 中,返回值将是 (do-something)如果 x恰好是 4 ,或在任何其他情况下未指定。

关于scheme - 方案中的 "return"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23327911/

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