gpt4 book ai didi

elixir - 当作为函数参数传递时,elixir 是否会复制 map ?

转载 作者:行者123 更新时间:2023-12-04 11:34:52 24 4
gpt4 key购买 nike

换句话说,我想知道在 elixir 中是通过值还是通过引用将映射传递给函数。鉴于 Elixir 的无副作用原则,我怀疑它是按值(value)计算的。但是,那么大 map 不会造成巨大的重复效率低下吗?

在此先感谢您的帮助。

最佳答案

由于 Elixir 中的所有术语都是不可变的,因此无论参数是“按值”还是“按引用”传递,用户都没有区别。您永远不能修改函数中术语的值,并将其反射(reflect)在调用者发送给函数的变量中。映射特别可以被认为是“通过引用”传递的,因为只有一个指向它们的指针被 VM 发送到函数,这是非常有效的。

需要注意的一件事是,传递给其他进程的术语被 VM 深度复制。唯一的异常(exception)是“大”字符串,通常大于 64 字节,它们作为对全局二进制堆的引用传递,并使用引用计数进行垃圾收集。

I suspect it is by value given Elixir's principle of no side effect.



Elixir 不纯,它有副作用。例如,您可以向任何函数添加 I/O。您可能意味着没有可变值。

关于elixir - 当作为函数参数传递时,elixir 是否会复制 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39996344/

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