scheme - Scheme中的参数传递

标签 scheme parameter-passing

谁能帮我理解 Scheme 中的各种参数传递模式?我知道 Scheme 实现了按值传递参数。但是其他模式呢?

Scheme中的参数传递有什么好的文档吗?

最佳答案

方案 具有按值调用的函数调用。还有其他可以在该语言中实现的替代方案,但如果您是初学者,那么此时最好不要尝试它们。如果您正在寻找一种“通过引用”传递值的方法 - 那么可以使用宏的一个选项是使用宏,但您真的不应该去那里。相反,一些像 PLT Scheme 这样的 Scheme 实现提供了一个“盒子值”:这是一种容器,使用如下:

  • 您创建一个包含 <something> 的框与 (box <something>)
  • 您将获得存储在带有 (unbox <some-box>) 的框中的值
  • 您使用 (set-box! <some-box> <new-value>) 更改存储在框中的值

鉴于这两个,您可以“按值”使用此类框对象,但它们的内容实际上是一个引用。这与 C 非常相似,其中所有值(实际上大多数)都是按值传递的,但其中一些值可以是您可以改变的指针。顺便说一句,最好避免这些:在 Scheme 中,函数式编程是更常见的选择,因此最好从它开始。

(一旦您对 Scheme 更加熟悉,并且如果您使用的是具有足够抽象的 Scheme,那么您也可以学习如何模仿许多替代方案。)

关于scheme - Scheme中的参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2304481/

相关文章:

Java/PostgreSQL - 性能数据优化

c++ - 将类的所有变量传递给函数

python - Python 方法如何处理任意参数?

recursion - Fibonacci Tree-Recursion in Structure and Interpretation of Computer Programs

functional-programming - 编写方案函数,在给定要搜索的字符的情况下,将列表中的元素加倍

java - 我可以访问不在 Struts 2 ValueStack 上的另一个操作的属性吗?

c - 将参数解析为数组

binding - 方案和浅绑定(bind)

macros - 在方案中定义全局闭包的标准方法是什么?

string - Racket 中列表到字符串的转换