Racket 球拍中的参数有什么用途?

Racket 球拍中的参数有什么用途?,racket,Racket,我试图理解单线程程序的Racket中的参数,我读到了这方面的内容。尽管如此,我仍然不明白为什么它对单线程程序有用。为什么它有用?我应该把它看作是实现全局变量的一种方式吗?Racket参数可以用来提供动态范围(而不是通常的词汇范围)。它还提供线程本地存储 若Racket并没有参数,那个么我敢肯定,会有更多的程序使用它 全局变量 作为用例的一个例子,考虑一个绘制点、线、矩形等的程序。每个形状都有一个绘制形状的函数。 用户当然希望控制用于绘制形状的颜色。 一个选项是让所有函数都有一个color参数作为

我试图理解单线程程序的Racket中的参数,我读到了这方面的内容。尽管如此,我仍然不明白为什么它对单线程程序有用。为什么它有用?我应该把它看作是实现全局变量的一种方式吗?

Racket参数可以用来提供动态范围(而不是通常的词汇范围)。它还提供线程本地存储

若Racket并没有参数,那个么我敢肯定,会有更多的程序使用它 全局变量

作为用例的一个例子,考虑一个绘制点、线、矩形等的程序。每个形状都有一个绘制形状的函数。 用户当然希望控制用于绘制形状的颜色。 一个选项是让所有函数都有一个

color
参数作为输入。 很快就会意识到,人们通常会画很多形状 使用相同的颜色-因此不是所有函数都使用额外的参数, 我们希望将当前颜色存储在绘图函数的“外部”

我们可以将当前颜色存储在全局变量中,但是我们需要考虑 如果我们设置当前颜色,调用辅助函数,然后继续绘制,会发生什么。helper函数可能会更改当前颜色,因此 调用helpers时,我们需要存储旧值,然后需要恢复该值

使用参数更容易,因为
参数化
表单将恢复 在正确的时间临时将绑定更改回原始绑定

作为旁注,参数在存在连续性时正常工作, 可以用来跳回计算的中间部分

这里有一个关于动态范围的解释:

指南的最后一节总结了参数的优点 在全局变量上: