- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
换句话说,我想知道在 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 - 当作为函数参数传递时,elixir 是否会复制 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39996344/
我正在使用 Jackson 序列化实现 Map 的自定义类。但在幕后,它实际上是一个 Map (此类代表 HTTP 请求参数),我希望 Jackson 将其序列化,就好像它是 Map 一样。 。我原以
这个问题在这里已经有了答案: Where and why do I have to put the "template" and "typename" keywords? (8 个答案) 关闭 8
我最近遇到了一些渐近符号,当这个问题出现时,它是 50 n logn 并且根据流行的规则获得 Big-OH 符号是简单地删除常数和低阶项。但是 50n logn 也是n^5 的 BIG-OH。那么
我是一名优秀的程序员,十分优秀!