谁能帮我理解Scheme中的各种参数传递模式?我知道Scheme实现了按值传递参数。但其他模式又如何呢?
有没有关于Scheme中参数传递的好的文档?
方案有only按值调用函数调用。还有其他可以在该语言中实现的替代方案,但如果您是初学者,那么此时最好不要尝试它们。如果您正在寻找一种“通过引用”传递值的方法 - 那么可以实现这一点的一个选择是使用宏,但您确实不应该这样做。相反,一些Scheme实现(例如PLTScheme)提供了一个“框值”:这是一种容器,使用方式如下:
- 你创建一个盒子来容纳
<something>
with (box <something>)
- 您可以获取存储在框中的值
(unbox <some-box>)
- 您可以使用以下命令更改存储在框中的值
(set-box! <some-box> <new-value>)
给定这两个,您可以“按值”使用此类框对象,但它们的内容实际上是一个引用。这非常类似于 C,其中所有值(实际上大多数)都是按值传递的,但其中一些值可以是可以改变的指针。顺便说一句,最好甚至避免这些:在Scheme中,函数式编程是更常见的选择,因此最好从它开始。
(一旦您更熟悉Scheme,并且您使用具有足够抽象的Scheme,那么您也可以学习如何模仿许多替代方案。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)