gpt4 book ai didi

racket - Racket中的参数有什么用?

转载 作者:行者123 更新时间:2023-12-03 21:49:18 25 4
gpt4 key购买 nike

我正在尝试了解 Racket 中用于单线程程序的参数,我阅读了它 here .也就是说,我仍然对为什么它对单线程程序有用感到困惑。为什么有用?我应该将其视为实现全局变量的一种方式吗?

最佳答案

Racket 参数可用于提供动态范围(而不是通常的词法范围)。它还提供线程本地存储。
如果 Racket 没有参数,那么我敢肯定,更多的程序会使用
全局变量。
作为一个用例的例子,考虑一个绘制点、线、矩形等的程序。每个形状都有一个绘制形状的函数。
用户当然希望控制用于绘制形状的颜色。
一种选择是让所有函数都有一个 color参数作为输入。
很快就会意识到,最常见的是一个人画了很多形状
使用相同的颜色 - 所以不是所有函数都需要一个额外的参数,
我们想将当前颜色存储在绘图函数的“外部”。
我们可以将当前颜色存储在一个全局变量中,但是我们需要考虑
如果我们设置当前颜色,调用辅助函数并继续绘制会发生什么。辅助函数可能会改变当前颜色,所以之前
调用助手,我们需要存储旧值,之后我们需要恢复该值。
使用参数更容易,因为 parameterize表格将恢复
在正确的时间暂时将绑定(bind)更改回原来的。
作为旁注参数在存在延续的情况下正常工作,
它可以用来跳回到计算的某个中间部分。
这里有动态范围的解释:
https://en.wikipedia.org/wiki/Scope_(computer_science)#Dynamic_scoping
指南中参数的最后一节总结了参数的优点
在全局变量上:
https://docs.racket-lang.org/guide/parameterize.html

关于racket - Racket中的参数有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63313964/

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